题目
题目描述
给你n个数a1,a2,a3,…,an,现要将其排成非递减的顺序,对于当前你每次可以做如下操作
a1,a2,a3,…,an→an,a1,a2,a3,…,an−1
现在问你最少需要操作几次使得序列变成非递减。
输入格式
第一行先输入一个整数n
第二行输入n个整数
输出格式
输出一个整数,表示最少的操作次数
如果无法使得序列变成非递减,输出-1
样例
Input 1
6
4 5 6 1 2 3
Output 1
3
样例解释
这里可以通过操作将序列变为1 2 3 4 5 6,需要三次操作
数据范围
2<=n<=10^5, 1<=ai<=10^5
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,b;
deque<int>a;
cin>>n;
for(int i=0;i<n;i++){
cin>>b;
a.push_back(b);
}for(int i=0;i<n;i++){
b=1;
for(int j=0;j<n-1;j++){
if(a[j]>a[j+1]){
b=0;
break;
}
}if(b){
cout<<i;
return 0;
}a.push_back(a.front());
a.pop_front();
}cout<<-1;
return 0;
}
#3#4#6#8#10WA,#5#7#9TLE