题目
思路
水题,细心即可
代码
#include <iostream>
#include <string>
#include<algorithm>
#include<vector>
using namespace std;
#define nmax 100001
#define inf 999999
typedef struct {
int ID;
int VG;
int TG;
}info;
vector<info> sage;
vector<info> nobleman;
vector<info> foolman;
vector<info> other;
info fo;
bool cmp(const info& a,const info& b) {
if (a.TG + a.VG != b.TG + b.VG)
return a.TG + a.VG > b.TG + b.VG;
else
if (a.VG != b.VG)
return a.VG > b.VG;
else
return a.ID < b.ID;
}
void print(vector<info>& vec) {
for (auto& p:vec) {
printf("%08d %d %d\n", p.ID, p.VG, p.TG);
}
}
int main()
{
int num, low, high;
cin >> num >> low >> high;
int sum = num;
for (int i = 0; i < num; ++i) {
cin >> fo.ID >> fo.VG >> fo.TG;
if (fo.VG < low || fo.TG < low) {
--sum;
continue;
}
else if (fo.VG >= high && fo.TG >= high)
sage.emplace_back(fo);
else if (fo.VG >= high && fo.TG < high)
nobleman.emplace_back(fo);
else if (fo.VG < high && fo.TG < high && fo.VG >= fo.TG)
foolman.emplace_back(fo);
else
other.emplace_back(fo);
}
cout << sum << endl;
sort(sage.begin(), sage.end(), cmp);
sort(nobleman.begin(), nobleman.end(), cmp);
sort(foolman.begin(), foolman.end(), cmp);
sort(other.begin(), other.end(), cmp);
print(sage);
print(nobleman);
print(foolman);
print(other);
return 0;
}