ソースコード
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, x, s = 0;
cin >> n;
vector<int> va, vb;
for (int i = 0; i < n; ++i) {
cin >> x;
s += x;
if (x % 3 == 1) va.push_back(x);
if (x % 3 == 2) vb.push_back(x);
}
sort(va.begin(), va.end());
sort(vb.begin(), vb.end());
if (s % 3 == 0) {
cout << s << '\n';
}
else if (s % 3 == 1) {
int cur = 0;
if (va.size() >= 1) cur = s - va[0];
if (vb.size() >= 2) cur = max(cur, s - vb[0] - vb[1]);
cout << (cur == 0 ? -1 : cur) << '\n';
}
else {
int cur = 0;
if (va.size() >= 2) cur = s - va[0] - va[1];
if (vb.size() >= 1) cur = max(cur, s - vb[0]);
cout << (cur == 0 ? -1 : cur) << '\n';
}
return 0;
}