ACM 看了半天没看懂在说的什么.

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/30 03:58:06

ACM 看了半天没看懂在说的什么.
ACM 看了半天没看懂在说的什么.

ACM 看了半天没看懂在说的什么.

给定一个非负整数序列


定义一次操作为

先在序列中找一个不小于3的数x,把它改成x-3

然后在序列里面找一个数y,把它改成y+1


问上面的操作最多可以执行多少次

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
int n;
while (cin >> n) {
long long ans = 0;
long long add = 0;
int mod[3];
mod[0] = mod[1] = mod[2] = 0;
for (int i = 0; i < n; i++) {
int temp;
cin >> temp;
ans += temp / 3;
mod[temp % 3]++;
}
add = ans;
if (add) {
ans += mod[2];
}
if (add >= mod[1] + 1) {
ans += mod[1];
add -= mod[1];
}
else {
ans += max(add - 1, 0LL);
}
while (add >= 3) {
ans += add / 3;
add = add / 3 + add % 3;
}
cout << ans << endl;
}
}