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;
}