□Problem
いくつかのブロックを縦に並べた列がいくつかある.全ての列の高さを平坦化するのに必要なブロックの移動回数の最小値を求めよ.
(便宜上90°回転してます)
■■■■■
■■
■■■■
■
■■■■■■■
■■■■■
↓
■■■■
■■■■
■■■■
■■■■
■■■■
■■■■
□Solution
やるだけ.
□Code
- package p1477;
- import java.util.*;
- import java.lang.*;
- import java.math.*;
- public class Main{
- Scanner sc=new Scanner(System.in);
- void run(){
- for(int s=1;; s++){
- int n=sc.nextInt();
- if(n==0)
- break;
- int[] a=new int[n];
- int ave=0;
- for(int i=0; i<n; i++)
- ave+=a[i]=sc.nextInt();
- ave/=n;
- int ans=0;
- for(int i=0; i<n; i++)
- if(a[i]>ave)
- ans+=a[i]-ave;
- println("Set #"+s);
- println("The minimum number of moves is "+ans+".");
- println("");
- }
- }
- void println(String s){
- System.out.println(s);
- }
- void print(String s){
- System.out.print(s);
- }
- public static void main(String[] args){
- new Main().run();
- }
- }
0 件のコメント:
コメントを投稿