#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;
#define N 10001
#define K 6
struct user {
int id;
int ts;
int psp;
bool operator<(const user &b) const {
if(ts ^ b.ts)
return ts > b.ts;
if(psp ^ b.psp)
return psp > b.psp;
return id < b.id;
}
};
int main(int argc, char **argv) {
int uscore[N][K] = {{}};
int usubmit[N][K] = {{}};
int submit[N] = {};
int score[K] = {};
int n, k, m;
cin >> n >> k >> m;
for(int i = 1; i <= k; i ++)
cin >> score[i];
for(int i = 0; i < m; i ++) {
int id, pid, ps;
scanf("%d%d%d", &id, &pid, &ps);
if(uscore[id][pid] <= ps) {
uscore[id][pid] = ps;
submit[id] ++;
}
usubmit[id][pid] ++;
}
vector<user> rl;
for(int i = 1; i <= n; i ++) {
if(submit[i]) {
user u = {};
u.id = i;
for(int j = 1; j <= k; j ++) {
u.ts += uscore[i][j];
if(uscore[i][j] == score[j])
u.psp ++;
}
rl.push_back(u);
}
}
sort(rl.begin(), rl.end());
int rank = 0;
for(int i = 0; i < rl.size(); i ++) {
const user &u = rl[i];
if(u.ts != rl[rank].ts)
rank = i;
printf("%d %05d %d", rank+1, u.id, u.ts);
for(int j = 1; j <= k; j ++) {
if(usubmit[u.id][j])
printf(" %d", uscore[u.id][j]);
else
printf(" -");
}
putchar('\n');
}
return 0;
}
1075. PAT Judge (25)
最新推荐文章于 2021-04-20 15:38:50 发布