您的位置:首页 > 产品设计 > UI/UE

1062. Talent and Virtue (25) 排序

2016-03-09 14:20 501 查看
传送门:https://www.patest.cn/contests/pat-a-practise/1062

#include <iostream>
#include <vector>
#include <math.h>
#include <algorithm>
using namespace std;
struct stu{
string str;
int DScore;
int CScore;
};
bool sortBy(stu a,stu b){
if (a.DScore+a.CScore!=b.DScore+b.CScore) {
return a.DScore+a.CScore>b.DScore+b.CScore;
}else{
if (a.DScore!=b.DScore)
return a.DScore>b.DScore;
else
return a.str<b.str;
}
}
int main() {
int N,L,H,count=0;
scanf("%d%d%d",&N,&L,&H);
vector<stu>stus1,stus2,stus3,stus4;
for (int i=0; i<N; i++) {
stu s;
char p[10];
scanf("%s%d%d",p,&s.DScore,&s.CScore);
s.str=p;
if (s.DScore>=L&&s.CScore>=L) {
count++;
if(s.DScore>=H&&s.CScore>=H)
stus1.push_back(s);
else if(s.DScore>=H&&s.CScore<H)
stus2.push_back(s);
else{
if (s.DScore>=s.CScore)
stus3.push_back(s);
else
stus4.push_back(s);
}
}
}
sort(stus1.begin(),stus1.end(),sortBy);
sort(stus2.begin(),stus2.end(),sortBy);
sort(stus3.begin(),stus3.end(),sortBy);
sort(stus4.begin(),stus4.end(),sortBy);
cout<<count<<endl;
for (stu s : stus1)
printf("%s %d %d\n",s.str.c_str(),s.DScore,s.CScore);
for (stu s : stus2)
printf("%s %d %d\n",s.str.c_str(),s.DScore,s.CScore);
for (stu s : stus3)
printf("%s %d %d\n",s.str.c_str(),s.DScore,s.CScore);
for (stu s : stus4)
printf("%s %d %d\n",s.str.c_str(),s.DScore,s.CScore);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: