问题标题: 酷町堂:5520 桃园结义

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼

题目传送门

 

我写的 5520 桃园结义 0 分代码如下:

#include<iostream>
#include<cstdio> 
#include<string>
#include<algorithm>
using namespace std;
struct jy{
    string name;
    int y,m,d;
}a[15000];
bool cmp(jy o,jy p){
    if(o.y!=p.y){
        return o.y<p.y;
    }
    else if(o.m!=p.m){
        return o.m<p.m;
    }
    else{
        return o.d<p.d;
    } 
}
int n;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        cout<<a[i].name<<endl;
    }
    return 0;
}

 

请找错


0
已采纳
汪恺恒
汪恺恒
中级启示者
中级启示者

题目说如果年龄一样,按照输入的顺序,先输入的后输出 ,所以cmp中要改成


    if(o.y!=p.y) return o.y<p.y;
    if(o.m!=p.m) return o.m<p.m;
    if(o.d!=p.d) return o.d<p.d;
    return o.cnt>p.cnt;

输入时


    for(int i=1;i<=n;i++){
        cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;
        a[i].cnt=i;

    }

结构体加一条

int cnt;

之后就AC了

我要回答