题解:
#include<iostream>
using namespace std;
int r=0;
void swap(int &a,int &b){
int t=a;
a=b;
b=t;
}
void sort(int s[],int l,int r,int n[],int c[])
{
int mid=s[(l+r)/2];
int i=l,j=r;
do{
while(s[i]>mid) i++;
while(s[j]<mid) j--;
if(i<=j)
{
swap(s[i],s[j]);
swap(n[i],n[j]);
swap(c[i],c[j]);
i++;
j--;
}
}while(i<=j);
if(l<j) sort(s,l,j,n,c);
if(i<r) sort(s,i,r,n,c);
}
using namespace std;
int r=0;
void swap(int &a,int &b){
int t=a;
a=b;
b=t;
}
void sort(int s[],int l,int r,int n[],int c[])
{
int mid=s[(l+r)/2];
int i=l,j=r;
do{
while(s[i]>mid) i++;
while(s[j]<mid) j--;
if(i<=j)
{
swap(s[i],s[j]);
swap(n[i],n[j]);
swap(c[i],c[j]);
i++;
j--;
}
}while(i<=j);
if(l<j) sort(s,l,j,n,c);
if(i<r) sort(s,i,r,n,c);
}
int main()
{
int n;
cin>>n;
int s[n],temp,num[n],c[n];
for(int i=0;i<n;i++){
s[i]=0;
num[i]=i+1;
for(int j=0;j<3;j++){
if(j==0){
cin>>c[i];
s[i]+=c[i];
}else{
cin>>temp;
s[i]+=temp;
}
}
}
sort(s,0,n-1,num,c);
int begin=0,end=0;
for(int i=0;i<n-1;i++){
if(s[i]==s[i+1]){
begin=i;
i++;
if(i+1!=n){
while(s[i]==s[i+1]){
i++;
if(i+1==n){
break;
}
}
}
end=i;
sort(c,begin,end,num,s);
}
}
for(int i=0;i<5;i++){
cout<<num[i]<<" "<<s[i]<<endl;
}
return 0;
}