题目链接:http://codeforces.com/contest/454/problem/B
解题思路:这题我们只需要判断有几个a[i]<a[i-1]的个数记为sum,如果sum==0那么直接输出0,如果sum==1那么则还需判断a[n]是否小于等于a[1],如果sum大于1,直接输出-1
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int a[100010];
int main()
{
int n,i,j,k;
while(scanf("%d",&n)==1)
{
int s=1,e=1;
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int sum=0;
for(i=2;i<=n;i++)
{
if(a[i]<a[i-1]) //记录sum 的个数
{
s=i;
sum++;
}
}
if(sum==0) //进行判断
{
printf("0\n");
}
else if(sum>1)
{
printf("-1\n");
}
else if(sum==1&&a[n]<=a[1])
{
printf("%d\n",n-s+1);
}
else
{
printf("-1\n");
}
}
return 0;
}