社区讨论
30分求调
B3968[GESP202403 五级] 成绩排序参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @m3b06d8h
- 此快照首次捕获于
- 2024/11/10 10:56 去年
- 此快照最后确认于
- 2024/11/10 13:13 去年
CPP
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct student
{
int chn=0,mah=0,eng=0,sum=0,num=0;
int pm=0;
bool iscp=0;
};
bool cmp1(student a,student b)
{
if(a.sum!=b.sum)
return a.sum>b.sum;
else if((a.mah+a.chn)!=(b.mah+b.chn))
return (a.mah+a.chn)>(b.mah+b.chn);
else if(max(a.mah,a.chn)!=max(b.mah,b.chn))
return max(a.mah,a.chn)>max(b.mah,b.chn);
else
{
if(a.num<b.num)
b.iscp=1;
else
a.iscp=1;
return a.num<b.num;
}
}
bool cmp2(student a,student b)
{
return a.num<b.num;
}
main()
{
student stu[200005];
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>stu[i].chn>>stu[i].mah>>stu[i].eng;
stu[i].sum=stu[i].chn+stu[i].mah+stu[i].eng;
stu[i].num=i;
}
sort(stu+1,stu+1+n,cmp1);
for(int i=1;i<=n;i++)
{
if(stu[i].pm) continue;
else
{
stu[i].pm=i;
int cur=1;
while(stu[i+cur].iscp)
{
stu[i+cur].pm=stu[i].pm;
cur++;
}
}
}
sort(stu+1,stu+1+n,cmp2);
for(int i=1;i<=n;i++)
cout<<stu[i].pm<<"\n";
return 0;
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...