AcWing 3426. 糖果分享游戏
原题链接
简单
作者:
故事里的大魔王
,
2025-01-08 18:10:02
,
所有人可见
,
阅读 3
#include <iostream>
#include <vector>
using namespace std;
int main(){
int N;
vector<int> tang;
vector<int>::iterator it;
int roll, max, min;
while(1){
// 每轮初始化
cin >> N;
if(N == 0) return 0;
tang.clear();
roll = 0;
max = 0x80000000;
min = 0x7fffffff;
// 每轮的糖果数
while(N--){
int tmp;
cin >> tmp;
tang.push_back(tmp);
if(tmp > max) max = tmp;
if(tmp < min) min = tmp;
}
// 循环开始轮数
while(max != min){
++ roll;
// 每一轮的传递操作
int front = 0, tmp;
for(it = tang.begin(); it < tang.end(); ++it){
*it /= 2;
tmp = *it;
*it += front;
front = tmp;
}
tang[0] += front;
// 奇数的小朋友+1
for(it = tang.begin(); it < tang.end(); ++it)
if(*it % 2 == 1)
*it += 1;
// 求最大最小
max = 0x80000000;
min = 0x7fffffff;
for(it = tang.begin(); it < tang.end(); ++it){
if(*it > max) max = *it;
if(*it < min) min = *it;
}
}
cout << roll << " " << max << endl;
}
}