ソースコード
#include <bits/stdc++.h>
#define inf 1000000000 //1E+9
#define mod 1000000007
using namespace std;
int main(){
int n;cin>>n;
int a[n];for(int i=0;i<n;i++)cin>>a[i];
vector<int> one,two;
int ans=0;
for(int i=0;i<n;i++){
if(a[i]%3==0)ans+=a[i];
if(a[i]%3==1)one.push_back(a[i]);
if(a[i]%3==2)two.push_back(a[i]);
}
sort(one.rbegin(),one.rend()); sort(two.rbegin(),two.rend());
while(one.size()>=3 && two.size()>=3){
ans+=one[0]+one[1]+one[2]+two[0]+two[1]+two[2];
one.erase(one.begin(),one.begin()+3);
two.erase(two.begin(),two.begin()+3);
}
while(one.size()>=two.size()+3){
ans+=one[0]+one[1]+one[2];
one.erase(one.begin(),one.begin()+3);
}
while(two.size()>=one.size()+3){
ans+=two[0]+two[1]+two[2];
two.erase(two.begin(),two.begin()+3);
}
int buf=0; for(int i=0;i<min(one.size(),two.size());i++)buf+=one[i]+two[i];
if(one.size()>=3)ans+=max(one[0]+one[1]+one[2],buf);
else if(two.size()>=3)ans+=max(two[0]+two[1]+two[2],buf);
else ans+=buf;
if(ans==0)cout<<"-1"<<endl;
else cout<<ans<<endl;
return 0;
}