Wangyuqi2010 @ 2024-02-29 13:13:56
#include<iostream>
#include<algorithm>
using namespace std;
struct pe{
string name;
int n,y,t;
}p[5050];
bool cmp(pe a,pe b){
if(a.n!=b.n)
return a.n>b.n;
else if(a.y!=b.y)
return a.y>b.y;
else if(a.t!=b.t)
return a.t>b.t;
else return a.name>b.name;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>p[i].name>>p[i].n>>p[i].y>>p[i].t;
}
sort(p+1,p+n+1,cmp);
for(int i=n;i>0;i--){
cout<<p[i].name<<endl;
}
return 0;
}
by cute_overmind @ 2024-02-29 13:21:23
如果有两个同学生日相同,输入靠后的同学先输出
所以你需要一个id来记他们的编号
by leiaxiwo @ 2024-02-29 13:21:31
@Wangyuqi2010 如果有两个同学生日相同,输入靠后的同学先输出,你试试
by TheForgotten @ 2024-02-29 13:22:03
偶然看见一次远古提交
最原始的方法最有效
#include<bits/stdc++.h>
using namespace std;
struct no
{ string s;
int n,y,r,num;
}a[110];
int n;
bool cmp(no a,no b)
{
if(a.n<b.n)return 1;
if(a.n>b.n)return 0;
if(a.n==b.n)
{
if(a.y<b.y)return 1;
if(a.y>b.y)return 0;
if(a.y==b.y)
{
if(a.r<b.r)return 1;
if(a.r>b.r)return 0;
if(a.r==b.r)
{
if(a.num>b.num)return 1;
else return 0;
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i].s>>a[i].n>>a[i].y>>a[i].r,a[i].num=i;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)cout<<a[i].s<<endl;
return 0;
}
by TheForgotten @ 2024-02-29 13:22:29
能互关吗
by fqzcwei @ 2024-02-29 21:26:07
哎哟曲奇不要在卷了
虽然我已经做完了