sort HDU - 1425
用流输入输出这道题过不了。加速也过不了。另外注意输出格式哦,多余空格需要注意哦
【代码一(原始快排)】
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=1000000+5;
int a[maxn];
void quick_sort(int a[],int st,int en){
int i=st,j=en+1;
if(st<en){
while(1){
do{i++;}while(!( a[i]<a[st] ||i==en));
do{j--;}while(!( a[j]>a[st] ||j==st ));
if(i<j) swap(a[i],a[j]);
else break;
}
swap(a[j],a[st]);
quick_sort(a,st,j-1);
quick_sort(a,j+1,en);
}
}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)==2){
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
quick_sort(a,0,n);
for(int i=0;i<m;i++){
if(i) printf(" ");
printf("%d",a[i]);
}
printf("\n");
}
return 0;
}
【代码二(sort)】
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1000000+5;
int a[maxn];
bool cmp(int a,int b){return a>b;}
int main()
{
int n,m;
while(scanf("%d%d",&n,&m)==2){
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n,cmp);
for(int i=0;i<m;i++){
if(i) printf(" ");
printf("%d",a[i]);
}
printf("\n");
}
return 0;
}