您的位置:首页 > 其它

Codeforces Round #318(Div. 2) A

2015-08-30 20:19 253 查看
题意:给你N个数,每个数代表一个人手里面有的票数、 你是第一个人、你可以用你的糖来换他们的票,糖是无限的、那么, 你想要手里面的票比其他人多,最少要给出几块糖?

思路:模拟题,找出所有票数的最大值,如果是第一个人的票数,那么直接输出0、 否则我要用一块糖来换取他的票,那么他的票数就减少了一个,我的票数就多了一张、一直循环,循环到1号位手里面票数最多位置,那么就是最后的答案、

AC代码:

#include<cstdio>
#include<cstring>
const int maxn=110;
int n;
int maxs,falg,ans;
int a[maxn];
int main()
{
while(scanf("%d",&n)!=EOF){
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
ans=0;
while(1){
maxs=falg=0;
for(int i=0;i<n;i++){
if(a[i]>=maxs){
maxs=a[i];
falg=i;
}
}
if(falg==0)
break;
else{
a[falg]--;
ans++;
a[0]++;
}
}
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: