結果

提出番号 498
提出者 ei1333
言語 C++
提出日時 2017-07-20 23:33:46
問題名 (18)おまんじゅうわけわけ
結果 AC
点数 100%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 2ms 7616KB
2 AC 100% 6ms 7904KB
3 AC 100% 2ms 7920KB
4 AC 100% 27ms 7536KB
5 AC 100% 60ms 8272KB
6 AC 100% 30ms 7728KB
7 AC 100% 28ms 7904KB
8 AC 100% 49ms 7728KB
9 AC 100% 43ms 8320KB

ソースコード

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