結果
問題 |
No.2165 Let's Play Nim!
|
ユーザー |
![]() |
提出日時 | 2022-12-16 20:03:39 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 1,410 bytes |
コンパイル時間 | 11,042 ms |
コンパイル使用メモリ | 283,424 KB |
最終ジャッジ日時 | 2025-02-09 14:21:24 |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | RE * 1 |
other | WA * 8 RE * 29 QLE * 1 |
ソースコード
#pragma GCC target("avx") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include <bits/stdc++.h> using namespace std; void solve() { int n; cin >> n; int xor_all = 0; vector<int> a(n); set<pair<int, int>> s; for( int i = 0; i < n; i++ ) { cin >> a[i]; cout << a[i] << endl; xor_all ^= a[i]; s.insert(make_pair(a[i], i)); } auto julys_turn = [&]() -> void { int i, k; cin >> i >> k; i--; xor_all ^= a[i]^(a[i]-k); s.erase(make_pair(a[i], i)); s.insert(make_pair(a[i]-k, i)); a[i] -= k; }; auto my_turn = [&]() -> void { int i = (*s.rbegin()).second, k = a[i]-(xor_all^a[i]); s.erase(make_pair(a[i], i)); s.insert(make_pair(xor_all^a[i], i)); xor_all = 0; a[i] -= k; cout << i+1 << " " << k << endl; }; auto ret = [&]() -> int { int ret_; cin >> ret_; return ret_; }; if( xor_all == 0 ) { cout << 0 << endl; julys_turn(); if( ret() == -1 ) return; }else { cout << 1 << endl; } while(true) { my_turn(); if( ret() == -1 ) return; julys_turn(); if( ret() == -1 ) return; } } int main() { cin.tie(0); ios::sync_with_stdio(false); int t; t = 1; // cin >> t; while(t--) solve(); }