84分代码求调

P1104 生日

tangyuanlong @ 2024-01-06 14:45:16

代码

#include<algorithm>
#include<cstdio>
#include<iostream>
using namespace std;
int n,k,s,s1;
struct u
{
    string a;
    int b,c,d;
};
u c[2001010];
bool cmp(u x,u y)
{
    if(x.b!=y.b)
    {
        return x.b>y.b;
    }
    else if(x.c!=y.c&&x.b==y.b)
    {
        return x.c>y.c;
    }
    else if(x.d!=y.d&&x.b==y.b&&x.c==y.c)
    {
        return x.d>y.d;
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>c[i].a>>c[i].b>>c[i].c>>c[i].d;
    }
    sort(c+1,c+n+1,cmp);
    for(int i=n;i>=1;i--)
    {
        cout<<c[i].a<<endl;
    }
    return 0;
}

by PvbeLLN @ 2024-01-06 15:15:09

题目中“如果有两个同学生日相同,输入靠后的同学先输出”。结构体加一个id,按输入顺序id递增。

#include<algorithm>
#include<cstdio>
#include<iostream>
using namespace std;
int n,k,s,s1;
struct u
{
    string a;
    int b,c,d,id;
};
u c[105];
bool cmp(u x,u y)
{
    if(x.b!=y.b)
    {
        return x.b>y.b;
    }
    else if(x.c!=y.c&&x.b==y.b)
    {
        return x.c>y.c;
    }
    else if(x.d!=y.d&&x.b==y.b&&x.c==y.c)
    {
        return x.d>y.d;
    }
    return x.id<y.id;   // <---
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>c[i].a>>c[i].b>>c[i].c>>c[i].d;
        c[i].id=i;   // <---
    }
    sort(c+1,c+n+1,cmp);
    for(int i=n;i>=1;i--)
    {
        cout<<c[i].a<<endl;
    }
    return 0;
}

by tangyuanlong @ 2024-01-06 15:30:32

@PubeLLN 非常感谢


by tushanran @ 2024-01-29 14:22:55

我也是


|