题解:P13133 [GCJ 2018 Qualification] Trouble Sort
zhanghq2012 · · 题解
题目链接
题目传送门
Solution
题意分析
一共有
解法
我们分析一下三元组冒泡排序:对于任意
AC代码
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int t;
cin>>t;
for(int i=1;i<=t;i++){
int n;
cin>>n;
vector<int> a,b,c;
//占位方便后续奇偶判断
a.push_back(-10);
b.push_back(-10);
c.push_back(-10);
for(int j=1;j<=n;j++){
int x;
cin>>x;
if (j%2==0) {
b.push_back(x);//b存偶数项
}
else {
c.push_back(x);//c存奇数项
}
}
//排序
sort(b.begin(),b.end());
sort(c.begin(),c.end());
int ans=-1;
for(int j=1;j<=n/2;j++){
//合并
a.push_back(c[j]);
a.push_back(b[j]);
}
if (n%2!=0) a.push_back(c[n/2+1]);
for (int j=1;j<=n-1;j++) {
if (a[j]>a[j+1]) { //排查错误
ans=j-1;
break;
}
}
cout<<"Case #"<<i<<": ";
if(ans!=-1) cout<<ans<<'\n';
else cout<<"OK\n";
}
return 0;
}