PAT A1062 Talent and Virtue
- 按要求梳理好排序的项目
- cin cout with string大失败
#include<iostream>
#include<vector>
#include<algorithm>
#include<cstring>
using namespace std;
struct People{
char ID[10];
int virtue;
int talent;
int total;
int kind;
};
vector<People> vp;
bool cmp(People p1,People p2){
if(p1.kind != p2.kind) return p1.kind > p2.kind;
else if(p1.total != p2.total) return p1.total > p2.total;
else if(p1.virtue != p2.virtue) return p1.virtue > p2.virtue;
else return strcmp(p1.ID,p2.ID) < 0;
}
int main(){
int num,L,H;
scanf("%d %d %d",&num,&L,&H);
for(int i = 0;i < num;i ++){
People tmp;
scanf("%s %d %d",tmp.ID,&tmp.virtue,&tmp.talent);
if(tmp.virtue < L || tmp.talent < L) continue;
tmp.total = tmp.virtue + tmp.talent;
if(tmp.virtue >= H && tmp.talent >= H) tmp.kind = 4;
else if(tmp.virtue >= H && tmp.talent < H) tmp.kind = 3;
else if(tmp.virtue >= tmp.talent) tmp.kind = 2;
else tmp.kind = 1;
vp.push_back(tmp);
}
sort(vp.begin(),vp.end(),cmp);
printf("%d\n",vp.size());
for(int i = 0;i < vp.size();i ++){
printf("%s %d %d\n",vp[i].ID,vp[i].virtue,vp[i].talent);
}
return 0;
}