1062 Talent and Virtue
1062 Talent and Virtue
#include<vector>
#include<algorithm>
#include<iostream>
#include<string>
using namespace std;
struct peo{
string id;int virtue,total;
};
bool cmp(const peo& a,const peo& b){
if(a.total!=b.total) return a.total>b.total;
else return a.virtue==b.virtue? a.id<b.id: a.virtue>b.virtue;
}
int main(){
int n,l,h;
cin>>n>>l>>h;
vector<peo>sages,nobleman,fool,small;
string id;int virtue,talent;
for(int i=0;i<n;i++){
cin>>id>>virtue>>talent;
if(virtue<l||talent<l) continue;
if(virtue>=h&&talent>=h) sages.push_back({id,virtue,talent+virtue});
else if(virtue>=h) nobleman.push_back({id,virtue,talent+virtue});
else if(virtue>=talent) fool.push_back({id,virtue,talent+virtue});
else small.push_back({id,virtue,talent+virtue});
}
sort(sages.begin(),sages.end(),cmp);
sort(nobleman.begin(),nobleman.end(),cmp);
sort(fool.begin(),fool.end(),cmp);
sort(small.begin(),small.end(),cmp);
cout<<sages.size()+nobleman.size()+fool.size()+small.size()<<endl;
for(peo& p:sages) cout<<p.id<<" "<<p.virtue<<" "<<p.total-p.virtue<<endl;
for(peo& p:nobleman) cout<<p.id<<" "<<p.virtue<<" "<<p.total-p.virtue<<endl;
for(peo& p:fool) cout<<p.id<<" "<<p.virtue<<" "<<p.total-p.virtue<<endl;
for(peo& p:small) cout<<p.id<<" "<<p.virtue<<" "<<p.total-p.virtue<<endl;
return 0;
}