結果
問題 |
No.3120 Lower Nim
|
ユーザー |
|
提出日時 | 2025-04-20 12:45:08 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 229 ms / 2,000 ms |
コード長 | 822 bytes |
コンパイル時間 | 6,979 ms |
コンパイル使用メモリ | 355,388 KB |
実行使用メモリ | 25,972 KB |
平均クエリ数 | 2685.91 |
最終ジャッジ日時 | 2025-04-20 12:45:25 |
合計ジャッジ時間 | 14,839 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 43 |
ソースコード
#pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #include<bits/stdc++.h> #include<atcoder/all> using namespace std; using namespace atcoder; using ll=long long; using mint=modint998244353; const ll inf=(1e9+7)*(1e9+7); int dx[4]={1,0,0,-1},dy[4]={0,1,-1,0}; const int mod=998244353; using P=pair<ll,int>; int main(){ int n,a[10000]; cin>>n; for(int i=0;i<n;i++) cin>>a[i]; int x=0; for(int i=0;i<n;i++) x^=a[i]; bool f=x>0; cout<<(f?"First":"Second")<<endl; for(int i=0;;i++){ int j,v,ret; if(i%2==f){ cin>>j>>v,j--; x^=a[j]; a[j]-=v; x^=a[j]; cin>>ret; }else{ v=1<<__builtin_ctz(x); for(int k=0;k<n;k++){ if(a[k]>=v){ j=k; break; } } x^=a[j]; a[j]-=v; x^=a[j]; cout<<j+1<<' '<<v<<endl; cin>>ret; } if(ret!=0) return 0; } }