UVa 591 Box of Bricks

链接

传送门

题意

给出一排高度不同的砖,输出让每个位置的砖高度相同所需移动的砖块数目的最小值。

思路

求每个位置高度与平均值的差,所有差值和的一半就是答案。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cstdlib>
using namespace std;

typedef long long LL;
const int maxn = 55;
int a[maxn];

int main() {
int n, t = 0;
while (~scanf("%d", &n) && n) {
int sum = 0;
for (int i = 0; i < n; ++i) {
scanf("%d", &a[i]);
sum += a[i];
}
sum /= n;
int ans = 0;
for (int i = 0; i < n; ++i) {
ans += abs(a[i] - sum);
}
printf("Set #%d\nThe minimum number of moves is %d.\n\n", ++t, ans >> 1);
}
return 0;
}