题目:
给你n个数a_1,a_2,a_3,...,a_n,现要将其排成非递减的顺序,对于当前你每次可以做如下操作
a_1,a_2,a_3,...,a_n→a_n,a_1,a_2,a_3,...,a_n−1,现在问你最少需要操作几次使得序列变成非递减,如果无法使得序列变成非递减,输出-1
代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[100001],f,p;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i]<a[i-1]&&f)
{
cout<<-1;
return 0;
}
else if(a[i]<a[i-1]) f=1,p=i;
}
cout<<n-p+1;
return 0;
}