代码太长了,求大佬们仔细阅读,就是无法并列排名
#include<bits/stdc++.h>
using namespace std;
struct node{
int chinese,maths,english,number,cme,cm,mcm;
};
struct node2{
int number,mingci;
};
bool cmp(node x,node y){
if(x.cme!=y.cme){
return x.cme>y.cme;
}else if(x.cm>y.cm){
return x.cm>y.cm;
}else if(x.mcm>y.mcm){
return x.mcm>y.mcm;
}else{
return x.number<y.number;
}
}
bool cmp2(node2 x,node2 y){
return x.number<y.number;
}
int main(){
int n;
cin>>n;
node a[10005];
node2 b[10005];
for(int i=1;i<=n;i++){
cin>>a[i].chinese>>a[i].maths>>a[i].english;
a[i].number=i;
a[i].cme=a[i].chinese+a[i].maths+a[i].english;
a[i].cm=a[i].chinese+a[i].maths;
a[i].mcm=max(a[i].chinese,a[i].maths);
b[i].mingci=a[i].number;
}
sort(a+1,a+n+1,cmp);
int c[10005]={};
for(int i=1;i<=n;i++){
if(a[i].cme==a[i-1].cme){
if(a[i].cm==a[i-1].cm){
if(a[i].mcm==a[i-1].mcm){
c[i]=a[i-1].number;
}else{
c[i]=a[i].number;
}
}else{
c[i]=a[i].number;
}
}else{
c[i]=a[i].number;
}
}
for(int i=1;i<=n;i++){
b[i].number=c[i];
}
sort(b+1,b+n+1,cmp2);
for(int i=1;i<=n;i++){
cout<<b[i].mingci<<'\n';
}
return 0;
}
当然我知道我代码实在没必要
0分