結果
問題 | No.1267 Stop and Coin Game |
ユーザー | ktr216 |
提出日時 | 2020-10-23 23:42:31 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 141 ms / 2,000 ms |
コード長 | 797 bytes |
コンパイル時間 | 1,714 ms |
コンパイル使用メモリ | 172,728 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-21 13:43:22 |
合計ジャッジ時間 | 3,854 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 43 |
ソースコード
#include <bits/stdc++.h> #define rep(i, n) for (int i = 0; i < (ll)(n); i++) using namespace std; typedef long long ll; int main() { ll N, V, t = 0; cin >> N >> V; vector<ll> A(N); rep(i, N) { cin >> A[i]; t += A[i]; } if (t <= V) { cout << "Draw\n"; return 0; } vector<bool> fst(1 << N, true); for (ll i = 1 << N; i >= 0; i--) { t = 0; rep(j, N) { if ((i >> j) & 1) t += A[j]; } if (t > V) { fst[i] = true; } else { fst[i] = false; rep(j, N) { if ((i >> j) & 1) continue; if (!fst[i | (1 << j)]) fst[i] = true; } } } if (fst[0]) cout << "First\n"; else cout << "Second\n"; }