题目描述
1.左边界步入条件是不相等开始之处
2.区间维护条件是单调递减且等差为1
3.右边步出条件为不再单减
4.后续若还有乱序则无唯一反转区间
3.做这种多条件模拟题千万别分心打游戏
样例
(模拟) $O(n)$
#include<bits/stdc++.h>
using namespace std;
const int N=1010;
int a[N],n;
int main(){
cin>>n;
int l,r;
l=r=0;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++){
if(a[i]!=i&&!l){
l=r=i;
continue;
}
if(r&&a[i]==a[i-1]-1){
r++;
continue;
}
if(a[i]!=i){
l=r=0;
break;
}
}
cout<<l<<" "<<r<<endl;
}