#include #include int score(int star, int rank) { return 50 * star + 50 * star / (0.8 + 0.2 * rank); } int main() { int n, l[26], t; char name[4000][17], p[4000]; int i, j; scanf("%d", &n); for (i = 0; i < n; i++) scanf("%d", &l[i]); scanf("%d", &t); char name_[4000][17]; int ssum[4000], s[26][4000], cnt = 0, flag, q[26] = {}, no; for (i = 0; i < t; i++) { scanf("%s %c", name[i], &p[i]); flag = 1; for (j = 0; j < cnt; j++) { if (strcmp(name_[j], name[i]) == 0) { flag = 0; break; } } if (flag) { sprintf(name_[cnt], name[i]); cnt++; } for (j = 0; j < cnt; j++) { if (strcmp(name_[j], name[i]) == 0) { no = j; break; } } int tmp = p[i] - 'A'; q[tmp]++; ssum[no] += (s[tmp][no] = score(l[tmp], q[tmp])); } int max; for (i = 0; i < cnt; i++) { no = 0; max = ssum[0]; for (j = 0; j < cnt; j++) { if (ssum[j] >= max) { max = ssum[j]; no = j; flag = 0; } } printf("%d %s ", i + 1, name_[no]); for (j = 0; j < n; j++) printf("%d ", s[j][no]); printf("%d\n", ssum[no]); ssum[no] = -1; } return 0; }