90pts WA#5,DaLao帮忙看看(玄关
查看原帖
90pts WA#5,DaLao帮忙看看(玄关
1184485
STEAMZzR01024602楼主2024/8/14 19:07
#include<bits/stdc++.h>
using namespace std;
struct man
{
    int yu,shu,ying;//语数英成绩
    int sum,yssum;//前面一个是总分,另一个是语文数学单独的总分
    int num;//序号
    int pai;//排名
};
bool cmp(man x,man y)
{
    if(x.sum>y.sum) return 1;
    else if(x.sum==y.sum&&x.yssum>y.yssum) return 1;
    else if(x.sum==y.sum&&x.yssum==y.yssum&&max(x.yu,x.shu)>max(y.yu,y.shu)) return 1;
    else return 0;
}
bool cmp2(man w,man e)
{
    return w.num<e.num;
}
signed main()
{
    int n;
    cin>>n;
    man a[n+10];
    for(int i=1;i<=n;i++)
    {
        cin>>a[i].yu>>a[i].shu>>a[i].ying;
        a[i].sum=a[i].yu+a[i].shu+a[i].ying;
        a[i].num=i;
        a[i].yssum=a[i].yu+a[i].shu;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++)
    {
        if(max(a[i].yu,a[i].shu)==max(a[i-1].yu,a[i-1].shu)&&a[i].ying==a[i-1].ying) a[i].pai=a[i-1].pai;//排序后如果其中一个与前一个并列,那么这个的排名就与前一个相同
        else a[i].pai=i;
    }
    sort(a+1,a+n+1,cmp2);
    for(int i=1;i<=n;i++) cout<<a[i].pai<<endl;
	return 0;
}
2024/8/14 19:07
加载中...