本文主要是介绍B1015,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#include<bits/stdc++.h>
using namespace std;
struct student {int id;int score1;//德分int score2;//才分 int score3;//德分+才分 int flag;
}stu[100100];
bool cmp(student a,student b){//排序啦 !if(a.flag!=b.flag) return a.flag<b.flag;else if(a.score3!=b.score3) return a.score3>b.score3;else if(a.score1!=b.score1) return a.score1>b.score1;else return a.id<b.id; }
int main(){//第一步:输入 int N,L,H,M;//M是过线的人数 scanf("%d%d%d",&N,&L,&H);//cin>>N>>L>>H;M=N;for(int i=0;i<N;i++){//第二步:逻辑实现 scanf("%d%d%d",&stu[i].id,&stu[i].score1,&stu[i].score2);//cin>>stu[i].id>>stu[i].score1>>stu[i].score2;stu[i].score3=stu[i].score1+stu[i].score2;//score3=德分+才分; if(stu[i].score1<L||stu[i].score2<L) {stu[i].flag=5;M--;}//不及格是第五类,其他的都是几个的 else if(stu[i].score1>=H&&stu[i].score2>=H) stu[i].flag=1;else if(stu[i].score1>=H&&stu[i].score2<H) stu[i].flag=2;else if(stu[i].score1<H&&stu[i].score2<H&&stu[i].score1>=stu[i].score2) stu[i].flag=3;else stu[i].flag=4;}sort(stu,stu+N,cmp);
//第三步:输出
cout<<M<<endl;
for(int i=0;i<M;i++){cout<<stu[i].id<<" "<<stu[i].score1<<" "<<stu[i].score2<<endl;
}return 0;
}
总结:
- 第一次出现运行超时啦!好开心的哦,把cin,cout换成scanf和printf即可
- cmp函数里面的if—else语句可以借鉴的哦!当有多个相同的条件时,反面if更刺激哦
- 引入了类flag,是我没有想到的,学到了!
这篇关于B1015的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!