[题解] 烦恼的Slithery
题意
按照给定的规则进行排序
分析
由于一名选手对应多个关键数据,我们很自然地考虑使用结构体来存储。对于排序,我们可以直接调用库函数sort,自定义cmp函数或者重载
代码
结构体+sort
#include<bits/stdc++.h>
using namespace std;
struct mem{
int num;
int t;
int p;
}w[1000010];
int n;
bool cmp(mem a,mem b)
{
if(a.t>b.t)
return true;
if(a.t==b.t)
return a.p<b.p;
return false;
}
int main()
{
cin>>n;
for(int i=1;i<=n;++i)
{
w[i].num=i;
cin>>w[i].t>>w[i].p;
}
sort(w+1,w+n+1,cmp);
for(int i=1;i<=n;++i)
cout<<w[i].num<<endl;
return 0;
}
说明
考虑到很多同学并不会写cmp函数或者重载运算符,我们提供另一种思路。可以使用三个数组,分别存储编号、题数和罚时,采用快速排序或者归并排序,在写排序函数时注意到两个比较大小的条件和交换时三个全部交换,即可完成排序过程。
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。