1015 德才论

又臭又长

#include <bits/stdc++.h>
using namespace std;
struct node {
	string sno;
	int df;
	int cf;
} s[10010];
vector<node> a,b,c,d;//三个批
bool cmp(node x1,node x2) {
	int g1 = x1.cf+x1.df;
	int g2 = x2.cf+x2.df;
	if(g1!=g2) return g1>g2;
	if(x1.df!=x2.df) return x1.df>x2.df;
	return x1.sno < x2.sno;
}
void print(vector<node> a) {
	for(int i=0; i<a.size(); i++) {
		printf("%s %d %d\n",a[i].sno.c_str(),a[i].df,a[i].cf);
	}
}
int main() {
	int n,l,h;
	cin>>n>>l>>h;
	string sno,df,cf;
	for(int i=0; i<n; i++) {
		cin>>s[i].sno>>s[i].df>>s[i].cf;
	}
	for(int i=0; i<n; i++) {
		if(s[i].df<l || s[i].cf<l) continue;
		//如果高于下限
		if(s[i].df>=h && s[i].cf>=h) {
			a.push_back(s[i]);
		} else if(s[i].df>=h) { //只有德分够了
			b.push_back(s[i]);
		} else if(s[i].df >= s[i].cf) {
			c.push_back(s[i]);
		} else {
			d.push_back(s[i]);
		}
	}
	sort(a.begin(),a.end(),cmp);
	sort(b.begin(),b.end(),cmp);
	sort(c.begin(),c.end(),cmp);
	sort(d.begin(),d.end(),cmp);
	printf("%d\n",a.size()+b.size()+c.size()+d.size());
    print(a);
    print(b);
    print(c);
    print(d);
	return 0;
}
posted @ 2024-04-15 15:11  YuKiCheng  阅读(4)  评论(0编辑  收藏  举报