8. 奇葩的排序,仅AC#1,求助

得分:

#1AC#2、#3、#4、#8 WA,#5、#6、#7、#9、#10 TLE。
样例输出
9

题目

题目描述

给你 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}

现在问你最少需要操作几次使得序列变成非递减。

输入格式

第一行先输入一个整数 n

第二行输入 n 个整数

输出格式

输出一个整数,表示最少的操作次数

如果无法使得序列变成非递减,输出 -1

样例

Input 1

6 4 5 6 1 2 3

Output 1

3

样例解释

这里可以通过操作将序列变为 1 2 3 4 5 6,需要三次操作

数据范围

2\le n\le 10^5, 1\le a_i\le 10^5

代码:

#include<iostream>
const int N=1e5+10;
using namespace std;
int n,a[N],cnt;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<n;i++){
		for(int j=i+1;j<=n;j++){
			if(a[i]>a[j]){
				swap(a[i],a[j]);
				cnt++;
			}
		}
	}
	cout<<cnt;
	return 0;
}

开环成链

其他的不提示~

题目规定了变换规则,请按题目要求来