0
点赞
收藏
分享

微信扫一扫

【Luogu3929】SAC E#1 - 一道神题 Sequence1


problem

solution

codes

#include<cstdio>

int n, a[(int)1e5+10];

int readint(){
int op=1,x=0; char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')op=-1; ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}
return op*x;
}

bool check(int dir){
int cnt = 0;
for(int i = 2; i <= n; i++, dir=!dir){ //到下一个数判断,方向需要改变
if(a[i]==a[i-1])continue; //值相同毫无存在感
if((a[i]<a[i-1]) == dir)continue; //方向正确
if(++cnt >= 2)return false;
else i++,dir=!dir; //如果还没有炸,那么要跳过这个值再比较
}
return true;
}

int main(){
while(scanf("%d",&n)==1){
for(int i = 1; i <= n; i++)a[i]=readint();
printf("%s\n",n<=3||check(0)||check(1)?"Yes":"No");
}
return 0;
}


举报

相关推荐

0 条评论