Run ID 作者 问题 语言 测评结果 时间 内存 代码长度 提交时间
31142 hukaiyuan 输出前k大的数 C++ 通过 0 MS 264 KB 718 2023-11-16 21:07:10

Tests(1/1):


#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; }


测评信息: