結果

問題 No.2110 012 Matching
ユーザー shoshoshomshoshoshom
提出日時 2022-10-28 22:50:37
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 87 ms / 2,000 ms
コード長 1,358 bytes
コンパイル時間 1,932 ms
コンパイル使用メモリ 202,552 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-07-06 02:04:17
合計ジャッジ時間 4,046 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2 ms
6,816 KB
testcase_01 AC 22 ms
6,940 KB
testcase_02 AC 58 ms
6,944 KB
testcase_03 AC 39 ms
6,940 KB
testcase_04 AC 79 ms
6,940 KB
testcase_05 AC 56 ms
6,944 KB
testcase_06 AC 55 ms
6,944 KB
testcase_07 AC 85 ms
6,940 KB
testcase_08 AC 5 ms
6,940 KB
testcase_09 AC 14 ms
6,940 KB
testcase_10 AC 87 ms
6,940 KB
testcase_11 AC 2 ms
6,944 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <algorithm>
#include <bits/stdc++.h>
#ifdef SHO_LOCAL
#include "debug.h"
#else
#define debug(...)                                                             \
  {}
#endif
using namespace std;

void solution() {
  long long A, B, C;
  cin >> A >> B >> C;
  long long a = A, b = B, c = C;
  long long ans = 0;

  auto Reset = [&]() {
    ans = 0;
    a = A, b = B, c = C;
  };

  auto cc = [&]() {
    ans += c / 2;
    c = c % 2;
  };
  auto ac = [&]() {
    long long t = min(a, c);
    ans += t * 2;
    a = max(0LL, a - t);
    c = max(0LL, c - t);
  };
  auto ab = [&]() {
    long long t = min(a, b);
    ans += t;
    a = max(0LL, a - t);
    b = max(0LL, b - t);
  };
  auto bb = [&]() {
    ans += b / 2 * 2;
    b = b % 2;
  };

  long long res = 0;
  vector<int> p(4);
  iota(p.begin(), p.end(), 0);
  do {
    Reset();
    for (int i = 0; i < 4; i++) {
      int j = p[i];
      if (j == 0)
        ab();
      else if (j == 1)
        ac();
      else if (j == 2)
        bb();
      else
        cc();
    }
    res = max(res, ans);
  } while (next_permutation(p.begin(), p.end()));
  cout << res << '\n';
}

int main() {
  iostream::sync_with_stdio(0), cin.tie(0), cout.tie(0);

  int TT;
  cin >> TT;
  for (int tc = 1; tc <= TT; tc++) {
    // cout << "Case #" << tc << ": " << solution() << '\n';
    solution();
  }

  return 0;
}
0