LGZX @ 2023-12-23 19:25:51
代码:
#include<bits/stdc++.h>
using namespace std;
struct mode{
string s;
int y,m,d,c;
};
bool cmp(mode a,mode b){
if(a.y>b.y){
return 1;
}else if(a.y==b.y){
if(a.m>b.m){
return 1;
}else if(a.m==b.m){
if(a.d>b.d){
return 1;
}else if(a.d==b.d){
if(a.c>b.c){
return 1;
}else{
return 0;
}
}else{
return 0;
}
}else{
return 0;
}
}else{
return 0;
}
}
int main(void){
int n;
cin>>n;
mode esd[n];
for(int i=0;i<n;i++){
cin>>esd[i].s>>esd[i].y>>esd[i].m>>esd[i].d;
esd[i].c=i;
}
sort(esd,esd+n,cmp);
for(int i=n-1;i>=0;i--){
cout<<esd[i].s<<endl;
}
}
测试点下下来对的,但是却WA哩qwq
求一下改
by GPUawa @ 2023-12-23 20:02:40
盲猜cmp
的问题
by GPUawa @ 2023-12-23 20:06:05
艹
by GPUawa @ 2023-12-23 20:12:11
@LGZX 懂了
cmp
函数有问题stable_sort
,sort
不是稳定排序(或者自己写排序)cmp
模板:
bool cmp(mode a,mode b){
if(a.y==b.y && a.m==b.m && a.d==b.d) return 1;
if(a.y!=b.y)
return a.y<b.y;
else if(a.m!=b.m)
return a.m<b.m;
else
return a.d<b.d;
}
输出的时候就顺序输出,
AC
by LGZX @ 2023-12-23 20:29:32
@GPUawa 谢谢!过了