欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

赛码 基本算法 翻转数组

程序员文章站 2022-06-02 11:58:44
...

不知为何在赛码上提交了看不到提交记录...就来这儿保存一下

题目:

赛码 基本算法 翻转数组

 

code:

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    int a[100006];
	cin>>n;
    for(int i =1;i<=n;++i){
            cin>>a[i];
    }
    int num = 0;
    int lastdownnum;
    if(a[1]>a[2]) lastdownnum=a[1];
    for(int i=2;i<n;++i){
        if(a[i]>a[i-1] && a[i]>a[i+1]) lastdownnum=a[i];//上一个开始降的元素
        if(a[i]<a[i-1] && a[i]<a[i+1]){//找到了不再继续降的元素
        	if(lastdownnum>a[i+1]){//特判即使这一段翻转了依然无法保持递增的情况
            	cout<<"no"<<endl;
            	return 0;
            }
            else num++;//统计递减序列段数
        }
    }
    if(a[n]<a[n-1]) num++;
    if(num==1) cout<<"yes"<<endl;
    else cout<<"no"<<endl;
    return 0;
}

 

相关标签: 水题