欢迎光临散文网 会员登陆 & 注册

[NOIP2007 普及组] T1 奖学金 AC过程

2023-08-08 15:36 作者:冰漪samara  | 我要投稿

#include <bits/stdc++.h>

using namespace std;

struct stu{

int ch,ma,en;

int sum;

int id;

}a[310];//结构体储存学生数据。

bool cmp(stu a,stu b){//排序函数

if(a.sum!=b.sum){

return a.sum>b.sum;

}else{

if(a.ch!=b.ch){

return a.ch>b.ch;

}else{

return a.id<b.id;

}

}

}

int n;

int main(){

scanf("%d",&n);

for(int i=1;i<=n;i++){

scanf("%d%d%d",&a[i].ch,&a[i].ma,&a[i].en);

a[i].sum=a[i].ch+a[i].ma+a[i].en;

a[i].id=i;

}//输入

for(int i=1;i<=5;i++){

for(int j=i+1;j<=n;j++){

if(cmp(a[j],a[i])){

swap(a[i],a[j]);

}

}

}//选择排序,因为n最大是300,时间复杂度不会过1秒。

for(int i=1;i<=5;i++){

printf("%d %d\n",a[i].id,a[i].sum);

}

}//输出。

这是一道简单的排序题,可以用重构来写,更简单,我这里用的是排序函数。

注意多关键字即可。

[NOIP2007 普及组] T1 奖学金 AC过程的评论 (共 条)

分享到微博请遵守国家法律