#include #include #include #include #include #include #include #include #include #include #include #include #define mod 1000000007; using namespace std; typedef long long ll; typedef pair Pr; #define N_MAX 27 int N,T; int L[N_MAX]; map m,proble_id; map lev; map id; struct data_t{ string name; int score[27] = {0}; ll total_score = 0; bool operator<(const data_t& right)const { return total_score > right.total_score; } }; int main() { cin >> N; //struct data_t player[27]; vector player(N+1); for (int i = 0; i < N; i++) cin >> L[i]; for (int i = 0; i < N; i++) { proble_id['A' + i] = i + 1; lev['A' + i] = L[i]; } cin >> T; int idd = 1; for (int i = 0; i < T; i++) { string str; char p; cin >> str >> p; if (id[str] == 0) { id[str] = idd++; player[idd - 1].name = str; } m[p]++; player[id[str]].score[proble_id[p]] = (int)(50 * lev[p] +50*lev[p] / (0.8 + 0.2*m[p])); } for (int i = 1; i <= N; i++) { for (int j = 1; j <= N; j++) { player[i].total_score += player[i].score[j]; } } sort(player.begin(),player.end()); int rank = 1; for (int i = 0; i < N; i++) { if (player[i].name.size() == 0)continue; cout << rank++ << " "<< player[i].name << " "; for (int j = 1; j <= N; j++) { printf("%d",player[i].score[j]); cout << " "; } cout << player[i].total_score << endl; } return 0; }