对结构体排序可以自己写一个bool类型的cmp函数,写在sort函数上
如果第一个不相等,就先排第一个数的顺序
如果第一个数都相等,就按第二个数排序
例题:Atcoder348—C
C - Colorful Beans (atcoder.jp)
#include <iostream>
#include <algorithm>
#include <cstring>
#define int long long
using namespace std;
const int N = 2e5+10;
struct Y{
int a;
int c;
}b[N];
int n;
int v[N];
int maxn;
bool cmp(Y d,Y e){
if(d.c!=e.c){
return d.c < e.c;
}
return d.a > e.a;
}
signed main()
{
cin >> n;
for(int i=1;i<=n;i++){
cin >> b[i].a >> b[i].c;
}
sort(b+1,b+n+1,cmp);
int k=0;
for(int i=1;i<=n;i++){
if(b[i].c!=b[i+1].c){
v[++k]=b[i].a;
}
// cout << b[i].c <<" "<<b[i].a <<endl;
}
sort(v+1,v+k+1);
cout << v[k];
return 0;
}
其中正是运用了cmp进行排序