64分求助!

P1104 生日

Abu_Dumbledore @ 2023-11-11 19:09:57

有大佬帮我看看哪里错了吗,最后两个测试点WA(感谢

64分代码:

#include<bits/stdc++.h>
using namespace std;
int y,m,d,q;//年,月,日,共q个数据
struct str{
    string n;//姓名
    long long int j;//=y*10000+m*100+d
    int i;//输入序号
}a[101];
bool cmp(str a, str b){
    if(a.j<b.j) return 1;
    else if(a.j==b.j){
        if(a.i<b.i) return 1;
        else return 0;
    }
    else return 0;
}
int main(){
    cin>>q;
    for(int w=1;w<=q;w++){
        cin>>a[w].n>>y>>m>>d;
        a[w].i=w;
        a[w].j=y*10000+m*100+d;
    }
    stable_sort(a+1,a+q+1,cmp);
    for(int w=1;w<=q;w++){
        cout<<a[w].n<<endl;
    }
} 

by __zhy__ @ 2023-11-11 19:18:17

@Abu_Dumbledore 你应该把年月日逐个比较


by Abu_Dumbledore @ 2023-11-11 19:45:38

@zhenghaoyi 年月日累加应该没问题吧 比如: 1990.10.11=19001011; 1995.06.24=19950624; 不影响比较吧


by LittleMonkeySP @ 2023-12-17 09:17:29

其实呢,这个题目说的是

如果有两个同学生日相同,输入靠后的同学先输出

所以,应该是完全不稳定的排序

(我也被坑了


|