ソースコード
#include <bits/stdc++.h>
using namespace std;
int main()
{
int N;
vector< int > A[3];
cin >> N;
for(int i = 0; i < N; i++) {
int X;
cin >> X;
A[X % 3].push_back(X);
}
for(int i = 0; i < 3; i++) {
sort(begin(A[i]), end(A[i]));
A[i].push_back(0);
reverse(begin(A[i]), end(A[i]));
for(int j = 1; j < A[i].size(); j++) A[i][j] += A[i][j - 1];
}
vector< int > mods(3, -1);
for(int i = 0; i < A[2].size(); i++) mods[i * 2 % 3] = max(mods[i * 2 % 3], i);
int ret = -1;
for(int i = 0; i < A[1].size(); i++) {
int mod = (3 - i % 3) % 3;
if(~mods[mod]) ret = max(ret, A[1][i] + A[2][mods[mod]] + A[0].back());
}
if(ret == 0) --ret;
cout << ret << endl;
}