90分,求调!!8. 奇葩的排序

8. 奇葩的排序

题目ID:3288必做题100分

最新提交:

Wrong Answer

60 分

历史最高:

Wrong Answer

90 分

时间限制: 1000ms

空间限制: 32768kB

题目描述

给你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 n,a[100010];
int main(){
	cin>>n;
	for(int i=0;i<n;i++) cin>>a[i];
	int x1,x2;
	for(x1=0;x1<n&&a[x1]<=a[x1+1];x1++);
	for(x2=n-1;x2>=0&&a[x2]>=a[x2-1];x2--);
	if(x2-x1==1||x2<x1) cout<<n-(x1+1);
	else cout<<"-1";
	return 0;
}

下载了一下错误数据:
3
1 3 2
加了特盘:
#include<bits/stdc++.h>
using namespace std;
int n,a[100010];
int main(){
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
int x1,x2;
for(x1=0;x1<n&&a[x1]<=a[x1+1];x1++);
for(x2=n-1;x2>=0&&a[x2]>=a[x2-1];x2–);
if(x2-x1==1&&a[n-1]<a[0]||x2<x1) cout<<n-(x1+1);
else cout<<“-1”;
return 0;
}
分更低了QAQ