codevs 1098 均分纸牌

来源:互联网 发布:安卓慢镜头软件 编辑:程序博客网 时间:2024/06/04 19:15

题目:codevs1098

思路: 直接从左到右,遇到小于均值的,直接向右边拿,大于均值的,直接给右边,因为纸牌总数为堆数n的倍数,所以最后肯定能均分;


代码如下:

#include<iostream>#include<algorithm>using namespace std;int a[105];int main(){int n;cin >> n;int count = 0;int sum = 0;for(int i = 0;i < n;i++){cin >> a[i]; sum+= a[i];}sum/=n;for(int i = 0;i < n;i++){if(a[i]==sum)continue;if(a[i] > sum){a[i+1] += a[i]-sum;a[i] = sum;count++;//cout << count << "/" << i << " ";}else {a[i+1] = a[i+1] - sum+a[i];a[i] = sum;count++;//cout << count << "/" << i <<  " ";}}/*for(int i = 0;i < n;i++){cout << a[i] << " ";}*/cout << count;return 0; }