#include <iostream>
using namespace std;
struct Grade{
int chinese;
int math;
int english;
int sum;
int i;
};
void swap(Grade *x,Grade *y){
Grade temp;
temp=*x;
*x=*y;
*y=temp;
}
int main(){
int n;
cin>>n;
Grade *x=new Grade [n];
for(int i=0;i<n;i++){
cin>>x[i].chinese>>x[i].math>>x[i].english;
x[i].sum=x[i].chinese+x[i].math+x[i].english;
x[i].i=i+1;
}
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++){
if(x[i].sum<x[j].sum){
swap(x[i],x[j]);
}
else if(x[i].sum==x[j].sum){
if(x[i].chinese<x[j].chinese)
swap(x[i],x[j]);
else if(x[i].i>x[j].i)
swap(x[i],x[j]);
}
}
for(int i=0;i<5;i++)
cout<<x[i].i<<" "<<x[i].sum<<endl;
}
#include<cstdio>
#include<cstdlib>
using namespace std;
int n,i,ma,en,j;
struct node{
int ch,num,sum;
}stu[301],*a,*b;
void input(void){
cin>>n;
for(i=0;i<n;i++){
cin>>stu[i].ch>>ma>>en;
stu[i].num=++j;
stu[i].sum=stu[i].ch+ma+en;
}
}
void output(void){
for(i=0;i<5;i++)
cout<<stu[i].num<<" "<<stu[i].sum<<endl;
}
//void work(void){
//}
int cmp(const void *p,const void *q){
a=(node *)p;b=(node *)q;
if(a->sum==b->sum&&a->ch==b->ch) return a->num-b->num;
if(a->sum==b->sum) return b->ch-a->ch;
return b->sum-a->sum;
}
int main(){
freopen("scholar.in","r",stdin);
freopen("scholar.out","w",stdout);
input();
//work();
qsort(stu,n,sizeof(stu[0]),cmp);
output();
return 0;
}
可改为C的伪C++代码