| 提出番号 | 715 |
|---|---|
| 提出者 | MMNMM |
| 言語 | C++ |
| 提出日時 | 2017-08-01 14:04:29 |
| 問題名 | (18)おまんじゅうわけわけ |
| 結果 | AC |
| 点数 | 100% |
| テストケース | 結果 | 得点 | 実行時間 | メモリ使用量 |
|---|---|---|---|---|
| 1 | AC | 100% | 2ms | 8320KB |
| 2 | AC | 100% | 2ms | 7776KB |
| 3 | AC | 100% | 2ms | 8320KB |
| 4 | AC | 100% | 8ms | 7776KB |
| 5 | AC | 100% | 9ms | 7984KB |
| 6 | AC | 100% | 13ms | 7696KB |
| 7 | AC | 100% | 8ms | 7984KB |
| 8 | AC | 100% | 8ms | 7984KB |
| 9 | AC | 100% | 8ms | 7792KB |
#include <bits/stdc++.h>
using namespace std;
long long int N, A, a, b, i, o[2] = {114514, 114514}, t[2] = {114514, 114514};
int main(){
scanf("%lld", &N);
for(; i < N; ++i){
scanf("%lld", &a);
A += a;
switch(a % 3){
case 0:
++b;
break;
case 1:
b += o[1] != 114514;
if(o[1] > a){
if(*o > a){
swap(*o, o[1]);
*o = a;
}else{
o[1] = a;
}
}
break;
case 2:
b += t[1] != 114514;
if(t[1] > a){
if(*t > a){
swap(*t, t[1]);
*t = a;
}else{
t[1] = a;
}
}
}
}
if((*o + *t > 114514) * !b)return 0 & puts("-1");
switch(A % 3){
case 1:
A -= min(*o, *t + t[1]);
break;
case 2:
A -= min(*t, *o + o[1]);
}
cout << A << endl;
return 0;
}