AcWing 5051. 翻转
原题链接
中等
作者:
Money_How
,
2023-07-15 21:21:29
,
所有人可见
,
阅读 96
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N = 1010;
int l,r,n,arr[N];
bool check()
{
for(int i = 1;i<n;i++)
if(arr[i]-arr[i-1]!=1) return false;
return true;
}
int main()
{
cin>>n;
for(int i = 1;i<=n;i++) cin>>arr[i];
for(int i = 1;i<=n;i++)
{
if(!l&&arr[i]-arr[i-1]!=1) l = i; //如果左端点还没有被更新且其不为以1递增的序列时 记录
if(arr[i]-arr[i-1]!=1&&arr[i]-arr[i+1]!=-1) r = i;
//如果左端点已经被更新了且右端点为递增序列前的最后一个点时 纪录
}
reverse(arr+l,arr+r+1);
if(check()) printf("%d %d",l,r);
else printf("0 0");
return 0;
}