結果
問題 |
No.715 集合と二人ゲーム
|
ユーザー |
|
提出日時 | 2025-05-15 15:40:03 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 691 bytes |
コンパイル時間 | 2,156 ms |
コンパイル使用メモリ | 206,660 KB |
実行使用メモリ | 11,080 KB |
最終ジャッジ日時 | 2025-05-15 15:40:11 |
合計ジャッジ時間 | 7,654 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 46 WA * 14 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define rep(i,n) for (int i=0; i<(int)n; i++) #define int long long signed main(){ int n; cin >> n; vector<int> grundy(n+1); rep(i,n){ if(i>68){ grundy[i+1]=grundy[i+1-68]; continue; } set<int> se; rep(j,i/2+1) se.insert(grundy[max(0LL,j-1)]^grundy[max(0LL,i-j-1)]); int gd=0; while(se.count(gd)) gd++; grundy[i+1]=gd; } vector<int> A(n); rep(i,n) cin >> A[i]; sort(A.begin(),A.end()); int ans=0; int ir=1; rep(i,n-1){ if(A[i+1]==A[i]+1) ir++; else{ ans^=grundy[ir]; ir=1; } } ans^=grundy[ir]; if(ans!=0) cout << "First\n"; else cout << "Second\n"; }