結果

提出番号 2352
提出者 kya
言語 C++
提出日時 2020-03-25 19:01:29
問題名 (18)おまんじゅうわけわけ
結果 AC
点数 100%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 2ms 8544KB
2 AC 100% 2ms 7600KB
3 AC 100% 2ms 7824KB
4 AC 100% 32ms 8464KB
5 AC 100% 33ms 8448KB
6 AC 100% 33ms 8464KB
7 AC 100% 32ms 8928KB
8 AC 100% 34ms 8928KB
9 AC 100% 34ms 8496KB

ソースコード

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;
    long long ans = 0;
    vector<long long> b, c;
    for (int i = 0; i < n; i++) {
        long long e;
        cin >> e;
        ans += e;
        if (e % 3 == 1) b.emplace_back(e);
        if (e % 3 == 2) c.emplace_back(e);
    }
    sort(b.begin(), b.end());
    sort(c.begin(), c.end());
    
    if (ans % 3 == 1) {
        if (b.size() > 0 and c.size() > 1) {
            ans = max(ans - b[0], ans - c[0] - c[1]);
        } else if (b.size()) {
            ans -= b[0];
        } else if (c.size() > 1) {
            ans -= (c[0] + c[1]);
        } else {
            ans = -1;
        }
    } else if (ans % 3 == 2) {
        if (b.size() > 1 and c.size() > 0) {
            ans = max(ans - b[0] - b[1], ans - c[0]);
        } else if (c.size()) {
            ans -= c[0];
        } else if (b.size() > 1) {
            ans -= (b[0] + b[1]);
        } else {
            ans = -1;
        }
    }
    if (ans == 0) ans = -1;
    cout << ans << endl;
    return 0;
}