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
我也是