9.2 德才论

 分类排序即可。

cmp设置比较条件,vector记录各类。

#include
#include
#include
#include
using namespace std;

const int N = 1e5+5;
typedef struct {
	int zkzh, df, cf;
} Stu;

int n, l, h, cnt;
vector px[5];

bool cmp(Stu a, Stu b){
	int suma = a.df+a.cf, sumb = b.df+b.cf;
	if(suma!=sumb) return suma > sumb;
	if(a.df!=b.df) return a.df > b.df;
	return a.zkzh < b.zkzh;
}

int main() {

    cin >> n >> l >> h;
    for(int i = 0; i < n; ++ i){
		int z, d, c;
		cin >> z >> d >> c;
		
		if(d >= l && c >= l){
			++ cnt;
			if(d >= h && c >= h) px[1].push_back({z, d, c});
			else if(d >= h) px[2].push_back({z, d, c});
			else if(d >= c) px[3].push_back({z, d, c});
			else px[4].push_back({z, d, c});
		}
	}
	
	cout << cnt << endl;
	for(int i = 1; i <= 4; ++ i)
	  sort(px[i].begin(), px[i].end(), cmp);
	
	for(int i = 1; i <= 4; ++ i)
	  for(auto t: px[i]) printf("%d %d %d\n", t.zkzh, t.df, t.cf);

	return 0;

}

你可能感兴趣的:(厦大数据结构实验课,算法,排序算法)