Box of Bricks
时间限制:1000 ms | 内存限制:65535 KB
- 描述
- Bob在垒砖块,但是他垒的有些乱,但是他很懒,所以想花费最少的体力来让他垒好的砖块一样高,所以你需要做的就是算出最少需要移动的砖块
- 输入
- 多组测试数据,以EOF结束,第一行是一个n(1<=n<=50)表示有n摞砖
第二行是n个正整数k(1<=k<=100)表示每摞砖的砖块数量
- 输出
- 对于每组输入数据有两行输出,第一行是一个Case #x,表示x组测试数据,第二行是一句话The minimum number of moves is y.表示最小的移动砖块的数量为y,若无解就输出No solution,每两组输出数据用一个分割线隔开
- 样例输入
-
6 5 2 4 1 7 5 2 1 2
- 样例输出
-
Case #1 The minimum number of moves is 5. <---华丽的分割线---> Case #2 No solution
- 来源
- hdu改编
-
上传者
#include<stdio.h> #include<algorithm> using namespace std; int main() { int i,n,a[100],sum,kase=1,ans; while(scanf("%d",&n)!=EOF) { for(i=0,sum=0;i<n;i++) { scanf("%d",&a[i]); sum+=a[i]; } if(kase==1) printf("Case #%d\n",kase++); else { printf("<---华丽的分割线--->\n"); printf("Case #%d\n",kase++); } if(sum%n) printf("No solution\n"); else { ans=sum/n; sort(a,a+n); for(i=0,sum=0;a[i]<ans;i++) { sum+=ans-a[i]; } printf("The minimum number of moves is %d.\n",sum); } } return 0; }
时间: 2024-10-10 16:36:04