#include<bits/stdc++.h>
using namespace std;
const int N=1e5+100;
int a[N],b[N*2];
int n,idx;
signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n;
bool flag=false;
for(int i=1;i<=n;i++){
cin>>a[i];
b[i]=b[i+n]=a[i];
if(a[i-1]>a[i]) flag=true;
}
if(!flag){
cout<<"0";
return 0;
}
sort(a+1,a+n+1);
idx=n;
while(b[idx]!=a[1]) idx--;
while(b[idx]==a[1]){
bool f=false;
for(int i=idx;i<=idx+n-1;i++){
if(b[i]!=a[i+1-idx]){
f=true;
break;
}
}
if(!f){
cout<<n-idx+1;
return 0;
}
idx--;
}
cout<<"-1";
return 0;
}
可以换个思路,比如想一想如何才是合格的排序,合格的排序有什么特征
1 个赞