Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
31142 | hukaiyuan | 输出前k大的数 | C++ | 通过 | 0 MS | 264 KB | 718 | 2023-11-16 21:07:10 |
#include<bits/stdc++.h> using namespace std; int num[100005]; int tmp[100005]; void merger(int l,int mid,int r){ int i=l,j=mid+1,m=l; while(i<=mid&&j<=r){ if(num[i]<num[j]){ tmp[m++]=num[j++]; } else{ tmp[m++]=num[i++]; } } while(i<=mid){ tmp[m++]=num[i++]; } while(j<=r){ tmp[m++]=num[j++]; } for(int i=l;i<=r;i++){ num[i]=tmp[i]; } } void mergersort(int l,int r){ if(l>=r) return; int mid=(l+r)>>1; mergersort(l,mid); mergersort(mid+1,r); merger(l,mid,r); } int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>num[i]; } mergersort(1,n); int k; cin>>k; for(int i=1;i<=k;i++){ cout << num[i] <<endl; } return 0; }