L2-027 名人堂与代金券

很容易就AC了但是真没get到这道题有啥用这个所谓的排名。

#include <bits/stdc++.h>
using namespace std;
struct node {
	string s;
	int zp;
	int rank;
}s[10010];
bool cmp(node n1, node n2) {
	if (n1.zp != n2.zp) {
		return n1.zp > n2.zp;
	}
	return n1.s < n2.s;
}
int main() {
	int n, g, k;
	int tota = 0;
	cin >> n >> g >> k;
	for (int i = 0; i < n; i++) {
		cin >> s[i].s >> s[i].zp;
		if (s[i].zp >= g) tota += 50;
		else if (s[i].zp >= 60) tota += 20;
	}
	sort(s, s + n, cmp);
	s[0].rank = 1;
	for (int i = 1;i<n; i++) {
		if (s[i].zp == s[i - 1].zp) s[i].rank = s[i - 1].rank;
		else s[i].rank = i+1;
		if (s[i].rank > k) break;
	}
	cout << tota << '\n';
	for (int i = 0; i < n && s[i].rank <= k; i++) {
		cout << s[i].rank << " " << s[i].s << " " << s[i].zp << "\n";
	}
	return 0;
}
posted @ 2024-03-19 15:42  YuKiCheng  阅读(10)  评论(0编辑  收藏  举报