样例已过,WA4个RE1个
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 3e5 + 10 ;
struct Node{
int id ;
int total ;
int yu , shu , yin ;
}node[MAXN];
bool cmp(Node a , Node b){
return a.total > b.total ;
}
bool cmp1(Node a , Node b){
return a.yu > b.yu ;
}
bool cmp2(Node a , Node b){
return a.id > b.id ;
}
int main(){
int n , mark = 0 , mark2 = 0 ;
cin>>n;
for (int i = 1 ; i <= n ; ++i){
cin>>node[i].yu>>node[i].shu>>node[i].yin;
node[i].id = i ;
node[i].total += node[i].yu + node[i].shu + node[i].yin ;
}
sort(node + 1 , node + n + 1 , cmp);
for (int i = 1 ; i <= n ; ++i){
if (node[i].total == node[i + 1].total){
mark = i ;
for (int j = i ; j <= n ; ++j){
if (node[i].total != node[j].total){
mark2 = j - 1 ;
break ;
}
if (node[i].total == node[j].total){
continue ;
}
}
sort(node + 1 + mark , node + 1 + mark2 , cmp1);
}
}
for (int i = 1 ; i <= n ; ++i){
if (node[i].yu == node[i + 1].yu){
mark = i ;
for (int j = i ; j <= n ; ++j){
if (node[i].yu != node[j].yu){
mark2 = j - 1 ;
break ;
}
if (node[i].yu == node[j].yu){
continue ;
}
}
sort(node + 1 + mark , node + 1 + mark2 , cmp2);
}
}
for (int i = 1 ; i <= 5 ; ++i){
cout<<node[i].id <<" "<<node[i].total<<"\n";
}
return 0 ;
}