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

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/31 12:22:20
ACM 看了半天没看懂在说的什么.
xT]o0}TZz2鼆W@_.ez3 R费:!LP *tͮO_ѨjLWn\N{i茼)D2t߂S8 h vkg_K̎OfW !Bfe: tN]Q?iI .zYQ`2IjeT,Yz(i~T4P U˔`  4Q5Ng4I8Δ`&Hb#" ,le3O,A (sw)HQ&~@Z"gXNݫoV&X20M4JEno~~%AC/dž@@fb@*~ .FKJepV{"L0&0q

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;
}
}