ソースコード
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int N, A, ans = 0;
vector<int> p[3];
int main () {
int ans = 0;
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d", &A);
if (A % 3 == 0) {
ans += A;
}
else {
p[A%3].push_back(-A);
}
}
sort(p[1].begin(), p[1].end());
sort(p[2].begin(), p[2].end());
int k = min(p[1].size(), p[2].size());
for (int i = 0, len = k; i < len; i++) {
ans -= p[1][i]+p[2][i];
}
for (int i = k, len = p[1].size()-2; i < len; i+=3) {
ans -= p[1][i]+p[1][i+1]+p[1][i+2];
}
for (int i = k, len = p[2].size()-2; i < len; i+=3) {
ans -= p[2][i]+p[2][i+1]+p[2][i+2];
}
if (ans == 0) {
puts("-1");
}
else {
printf("%d\n", ans);
}
}