Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
135907 | 陈馨逸 | 双关键字排序 | C++ | 运行超时 | 80 | 1000 MS | 1032 KB | 994 | 2024-03-07 13:21:31 |
#include<bits/stdc++.h> using namespace std; int n; struct shu { int a; int b; }shu[100001]; void fz(int i)//比较第二个数 { for(int j=i+1;j<=n;j++) { if(shu[j].a == shu[i].a ) { if(shu[j].b <shu[i].b ) { swap(shu[i].b ,shu[j].b ); } } else continue; } } void xh(int n) { for(int i=1;i<=n;i++) { if(shu[i].a ==shu[i+1].a )//如果第一个数相等 { fz(i); } } } void asort(int s,int t) { int i=s,j=t,mid=shu[(s+t)/2].a; while(i<=j) { while(shu[i].a<mid) i++; while(shu[j].a>mid) j--; if(i<=j) { swap(shu[i],shu[j]); i++; j--; } } if(s<j) asort(s,j); if(i<t) asort(i,t); return; } int main() { cin>>n;//输入 for(int i=1;i<=n;i++) { cin>>shu[i].a>>shu[i].b; } //比较第一个数、排序 asort(1,n); xh(n);//循环比较第二个数 for(int i=1;i<=n;i++)//输出 { cout<<shu[i].a <<" "<<shu[i].b <<endl; } }