社区讨论
又双叒叕来求助了,换了个思路(有注释,求大佬debug)
P1093[NOIP 2007 普及组] 奖学金参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @m3si9elv
- 此快照首次捕获于
- 2024/11/22 16:54 去年
- 此快照最后确认于
- 2025/11/04 14:12 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
#define pzq(a,b,c) for(int a=b;a<c;a++)
#define qzp(a,b,c) for(int a=b;a>=c;a--)
struct chengji{
int chinese,math,english;
};
bool cmp(int a,int b){
return a>b;
}
int main(){
int n;
cin>>n;
chengji a[n+1];int score[n+1];
pzq(i,1,n+1){
cin>>a[i].chinese>>a[i].math>>a[i].english;
score[i]=a[i].chinese+a[i].math+a[i].english;//输入数据,统计总分
}
sort(score+1,score+n+1,cmp);//将成绩由高到低排序
int num=0;
pzq(i,1,6){//输出五次
pzq(j,1,n+1){
if(score[i]=a[j].chinese+a[j].math+a[j].english){//从最高分开始寻找对应分数的人
if(num!=0){//判断前面是否已有同分的人被选中
if(a[j].chinese>a[num].chinese)num=j;continue;//如果挑战者的语文分数大于擂主,则成为擂主
if(a[j].chinese<=a[num].chinese)continue;//挑战失败则跳过
}
else num=j;continue;//若前面没有重分者,则自己成为擂主
}
else continue;
}
cout<<num<<" "<<score[i]<<endl;
a[num].chinese=0;a[num].math=0;a[num].english=0;
num=0;//重置编号并去重
}
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...