PAT乙题1015. 德才论 (25)

2018/01/25 PAT 共 1732 字,约 5 分钟
#include<iostream>
#include<string>
#include<cctype>
#include<vector>
#include<algorithm>
using namespace std;
struct d {
	int id;
	int de;
	int cai;
};
bool cmp(d a, d b) {
	if ((a.de + a.cai)>(b.de + b.cai))
		return true;
	else if ((a.de + a.cai) == (b.de + b.cai)) {
		if (a.de > b.de)
			return true;
		else if (a.de == b.de)
			return a.id < b.id;
		else
			return false;
	}
	return false;
}
bool cmp2(d a, d b) {
	return a.id<b.id;
}
vector<d> d1;
vector<d> d2;
vector<d> d3;
vector<d> d4;
int main() {
#ifdef LOCAL
	freopen("d:\\datain.txt", "r", stdin);
	//freopen("d:\\dataout.txt", "w", stdout);
#endif LOCAL
	int n, l, h;
	cin >> n >> l >> h;
	for (int i = 0; i < n; i++) {
		d t;
		//cin >> t.id >> t.de >> t.cai;
		scanf("%d%d%d", &t.id, &t.de, &t.cai);
		if (t.de >= l&&t.cai >= l) {
			if (t.de >= h && t.cai >= h) {
				d1.push_back(t);
			}
			else if (t.de >= h && t.cai < h) {
				d2.push_back(t);
			}
			else if (t.de < h&&t.cai < h&&t.de >= t.cai) {
				d3.push_back(t);
			}
			else {
				d4.push_back(t);
			}
		}
	}
	cout << d1.size() + d2.size() + d3.size() + d4.size() << endl;
	vector<d>::iterator it;
	sort(d1.begin(), d1.end(), cmp);
	sort(d2.begin(), d2.end(), cmp);
	sort(d3.begin(), d3.end(), cmp);
	sort(d4.begin(), d4.end(), cmp);

	it = d1.begin();
	//for (int i = 0; i < d1.size(); i++) {
	//	cout << d1[i].id << endl;
	//}
	while (it != d1.end()) {

		printf("%d %d %d\n", it->id, it->de, it->cai);
		it++;
	}
	it = d2.begin();
	while (it != d2.end()) {
		printf("%d %d %d\n", it->id, it->de, it->cai);

		it++;

	}
	it = d3.begin();
	while (it != d3.end()) {
		printf("%d %d %d\n", it->id, it->de, it->cai);

		it++;

	}
	it = d4.begin();
	while (it != d4.end()) {
		printf("%d %d %d\n", it->id, it->de, it->cai);

		it++;

	}


}

Search

    Table of Contents