#include<iostream>
#include<algorithm>
using namespace std;
struct tsco{
int odr;
int cns;
int mth;
int ish;
int total;
}stu[100001];
int add_subject_score(tsco s[],int a){
for(int i=0;i<a;i++){
s[i].odr=i+1;
s[i].total=s[i].cns+s[i].mth+s[i].ish;
}
}
bool cmp(tsco b,tsco c){
if(b.total>c.total) return 1;
else if(b.total<c.total) return 0;
else{
if(b.cns>c.cns) return 1;
else if(b.cns<c.cns) return 0;
else{
if(b.odr<c.odr) return 1;
else{
return 0;
}
}
}
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>stu[i].cns>>stu[i].mth>>stu[i].ish;
}
add_subject_score(stu,n);
sort(stu,stu+n,cmp);
for(int i=0;i<5;i++){
cout<<stu[i].odr<<" "<<stu[i].total<<endl;
}
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
struct tsco{
int odr;
int cns;
int mth;
int ish;
int total;
}stu[100001];
//int add_subject_score(tsco s[],int a){
// for(int i=0;i<a;i++){
// s[i].odr=i+1;
// s[i].total=s[i].cns+s[i].mth+s[i].ish;
// }
//}
bool cmp(tsco b,tsco c){
if(b.total>c.total) return 1;
else if(b.total<c.total) return 0;
else{
if(b.cns>c.cns) return 1;
else if(b.cns<c.cns) return 0;
else{
if(b.odr<c.odr) return 1;
else{
return 0;
}
}
}
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>stu[i].cns>>stu[i].mth>>stu[i].ish;
}
for(int i=0;i<n;i++){
stu[i].odr=i+1;
stu[i].total=stu[i].cns+stu[i].mth+stu[i].ish;
}
// add_subject_score(stu,n);
sort(stu,stu+n,cmp);
for(int i=0;i<5;i++){
cout<<stu[i].odr<<" "<<stu[i].total<<endl;
}
return 0;
}
这两篇代码一个把计算总分和保存学号做成了函数; 一个直接应用不做函数,为什么做成函数的会全部RE直接应用的不会。(两篇代码在DEV-C++上的效果相同,都能正常输出,都是正确答案。)