题意
Alice和Bob轮流从首段或尾部取走一个数,除第一个 每次拿的数要严格大于之前选的所有数,
无法取到即为输,Alice先取。
思路
游戏的输赢只和序列首尾的递增段有关,设首端递增序列数目为l,尾端数列递增序列数目为r.
任意一端为奇数那么先手必胜:
*若l或r为奇数,且奇数一端为大端,那先手必胜(一旦取了大端那小段在接下来的游戏中就不能再被取了)
*若l或r为奇数,且奇数为小端,只要Alice从奇数端开始取,那么每轮Alice可取到的都是奇数序列。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+9;
int a[N];
int main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int n;
cin>>n;
int l=1,r=1;
for(int i=0;i<n;i++) {
cin>>a[i];
}
for(int i=1;i<n;i++){
if(a[i]>a[i-1])l++;
else break;
}
for(int i=n-2;i>=0;i--){
if(a[i]>a[i+1])r++;
else break;
}
if(l%2==0&&r%2==0) cout<<"Bob"<<'\n';
else cout<<"Alice"<<'\n';
return 0;
}