找到需要反转区间的两端l和r,如果只反转一次,在区间[l,r]一定是单调的,只需要判断区间[l,r]是否单调即可
#include<iostream>
using namespace std;
const int N=1010;
int a[N];
int main(){
int n,l=0,r=0,ans=0;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++)
if(a[i]!=i){
l=i;
break;
}
for(int i=n;i>=1;i--)
if(a[i]!=i){
r=i;
break;
}
bool flag;
for(int i=l+1;i<=r;i++){
if((a[i]-a[i-1])!=-1){
flag=true;
break;
}
}
if(flag)puts("0 0");
else printf("%d %d",l,r);
}
so cool