結果
| 問題 |
No.2165 Let's Play Nim!
|
| コンテスト | |
| ユーザー |
ripity
|
| 提出日時 | 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();
}
ripity