提交时间:2022-04-11 11:09:42

运行 ID: 48238

#include <bits/stdc++.h> using namespace std; int a[110],n,minn,maxx,id; bool who=true,you1,other;//true Alice false Bob int dfs(int k,bool shei) { if(k==1) for(int i=1;i<=n;i++) if(a[i]>=0) return a[i]; if(shei) { int Max=INT_MIN,lst=-1,lsti,tt; for(int i=1;i<=n;i++) if(a[i]!=-1) { if(lst!=-1) if(a[i]>lst) tt=a[i],a[i]=-1,Max=max(Max,dfs(k-1,shei^1)),a[i]=tt; else tt=a[lsti],a[lsti]=-1,Max=max(Max,dfs(k-1,shei^1)),a[lsti]=tt; lst=a[i],lsti=i; } return Max; } else { int Min=INT_MAX,lst=-1,lsti,tt; for(int i=1;i<=n;i++) if(a[i]!=-1) { if(lst!=-1) if(a[i]<lst) tt=a[i],a[i]=-1,Min=min(Min,dfs(k-1,shei^1)),a[i]=tt; else tt=a[lsti],a[lsti]=-1,Min=min(Min,dfs(k-1,shei^1)),a[lsti]=tt; lst=a[i],lsti=i; } return Min; } } int main() { freopen("game.in","r",stdin); freopen("game.out","w",stdout); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",a+i),other|=(a[i]>1),you1|=(a[i]==1); if(!other) { if(!you1) { cout<<0<<endl; return 0; } } cout<<dfs(n,true); return 0; // while(n!=1) // { // if(who) // { // minn=INT_MAX; // for(int i=2;i<=n;i++) // if(max(a[i],a[i-1])<minn) // minn=max(a[i],a[i-1]),id=i; // if(a[id-1]>a[id])id--; // for(int i=id;i<=n;i++) // a[i]=a[i+1]; // } // else // { // maxx=INT_MIN; // for(int i=2;i<=n;i++) // if(min(a[i],a[i-1])>maxx) // maxx=min(a[i],a[i-1]),id=i; // if(a[id-1]<a[id])id--; // for(int i=id;i<=n-1;i++) // a[i]=a[i+1]; // } // who^=1,n--; // } // cout<<a[1]<<endl; return 0; }