RT。我调了好久了,求求大佬帮帮我!!!
一直只有40分,怎么回事啊!!!
#include<bits/stdc++.h>
using namespace std;
int n,m,a[10000005];
inline int read(){
int x;
cin>>x;
return x;
}//读优
inline void write(int x){
cout<<x<<" ";//以空格隔开
return ;
}//输优
inline bool check(){
for(int i=1;i<=m;i++)if(a[i]>a[i+1])return 0;//check部分,因为要求从小到大,前面肯定不能比后面大。
return 1;
}//Om的复杂度
inline void Rsort(){
for(int i=1;i<=10000005;i++){
int x=(rand()%m)+1,y=(rand()%m)+1;//很模板的一个Rsort,随机选取两个数进行对比交换。
if(x==y)continue;//没有与自己交换的必要
if(rand()%2){//随机交换,有极大的概率是正确的。
swap(a[x],a[y]);//既然判断正确,那就交换。
if(check())break;//既然都排序完了,肯定退出。
}
}
}
int main(){
srand((int)time(NULL));//很模板的一句话。
n=read(),m=read();
for(int i=1;i<=m;i++)a[i]=read();
a[m+1]=2147483647;//因为check是与后一个比较,当i=m的时候需要特判。
Rsort();
for(int i=1;i<=m;i++)write(a[i]);
return 0;
}