結果

提出番号 2218
提出者 ndifix
言語 C++
提出日時 2019-03-18 11:38:16
問題名 (18)おまんじゅうわけわけ
結果 WA
点数 0%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 2ms 8112KB
2 AC 100% 2ms 8176KB
3 AC 100% 2ms 8144KB
4 WA 0% 98ms 0KB
5 WA 0% 80ms 0KB
6 WA 0% 82ms 0KB
7 WA 0% 81ms 0KB
8 WA 0% 92ms 0KB
9 WA 0% 39ms 0KB

ソースコード

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

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