Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
167698 | 杜智真 | 双关键字排序 | C++ | 通过 | 100 | 457 MS | 656 KB | 909 | 2024-08-19 17:10:48 |
#include<bits/stdc++.h> using namespace std; int a[100005]; void QuickSort(int i,int j) //数组下标i到j的数据快排 { int m=i,n=j; int k=a[(i+j)>>1]; //选取中间元素 while(m<=n) { while(a[m]<k && m<j) m++; //从左到右找不小于k的元素 while(a[n]>k && n>i) n--; //从右到左找不大于k的元素 if(m<=n) swap(a[m++],a[n--]); //若找到且满足条件,则交换 } if(m<j) QuickSort(m,j); //递归 if(n>i) QuickSort(i,n); } int main(){ int n; cin>>n; for(int i=0;i<n;i++){ long long c,b; cin>>c>>b; a[i]=(c*100000)+b; } QuickSort(0,n-1); for(int i=0;i<n;i++){ long long u=a[i]; long long b=a[i]%100000; a[i]-=b; long long c=a[i]/100000; cout<<c<<" "<<b<<endl; } return 0; }