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

举报
小哈里 发表于 2022/05/11 01:24:58 2022/05/11
【摘要】 problem solution codes #include<cstdio> int n, a[(int)1e5+10]; int readint(){ int op=1,...

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;
}

文章来源: gwj1314.blog.csdn.net,作者:小哈里,版权归原作者所有,如需转载,请联系作者。

原文链接:gwj1314.blog.csdn.net/article/details/80573582

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。