結果
| 問題 |
No.715 集合と二人ゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-05-15 15:42:54 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 691 bytes |
| コンパイル時間 | 2,089 ms |
| コンパイル使用メモリ | 206,576 KB |
| 実行使用メモリ | 11,120 KB |
| 最終ジャッジ日時 | 2025-05-15 15:43:01 |
| 合計ジャッジ時間 | 7,053 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 57 WA * 3 |
ソースコード
#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>70){
grundy[i+1]=grundy[i+1-34];
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";
}