結果
問題 | No.715 集合と二人ゲーム |
ユーザー |
![]() |
提出日時 | 2018-07-13 23:10:32 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 274 ms / 2,000 ms |
コード長 | 1,554 bytes |
コンパイル時間 | 1,544 ms |
コンパイル使用メモリ | 169,828 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-10-09 05:34:06 |
合計ジャッジ時間 | 11,855 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 60 |
ソースコード
#include <bits/stdc++.h>#define syosu(x) fixed<<setprecision(x)using namespace std;typedef long long ll;typedef unsigned long long ull;typedef pair<int,int> P;typedef pair<double,double> pdd;typedef pair<ll,ll> pll;typedef vector<int> vi;typedef vector<vi> vvi;typedef vector<double> vd;typedef vector<vd> vvd;typedef vector<ll> vl;typedef vector<vl> vvl;typedef vector<string> vs;typedef vector<P> vp;typedef vector<vp> vvp;typedef vector<pll> vpll;typedef pair<int,P> pip;typedef vector<pip> vip;const int inf=1<<30;const ll INF=1ll<<60;const double pi=acos(-1);const double eps=1e-8;const ll mod=1e9+7;const int dx[4]={-1,0,1,0},dy[4]={0,-1,0,1};vi a(3000);int n;vi b;set<int> st;int f(int x){// if(x<3000) return a[x];while(x>=3000){if(st.find(x)==st.end()) x-=34;}return a[x];}int main(){st.insert(48);st.insert(50);st.insert(65);st.insert(68);st.insert(85);a[1]=a[2]=1;for(int i=3;i<3000;i++){vi b;for(int j=0;j<i;j++){int A=max(0,j-1),B=max(0,i-j-2);if(B<0) continue;b.push_back(a[A]^a[B]);}sort(b.begin(),b.end());b.erase(unique(b.begin(),b.end()),b.end());int T=-1;for(int j=0;j<b.size();j++) if(b[j]!=j){T=j;break;}if(T==-1) T=b.size();a[i]=T;}// for(int i=34;i<3000;i++) if(a[i]!=a[i-34]) cout<<i<<' '<<a[i]<<' '<<a[34]<<endl;cin>>n;b=vi(n);for(int i=0;i<n;i++) cin>>b[i];sort(b.begin(),b.end());int g=0,t=0;for(int i=1;i<n;i++) if(b[i]-b[i-1]>1){g^=f(i-t);t=i;}g^=f(n-t);cout<<(g?"First":"Second")<<endl;}