#include #include #include #include #include #include #include using namespace std; int main() { int n; cin >> n; vectorL(n); vectorSpeed(n); for (int i = 0; i < n; i++)cin >> L[i]; int T; cin >> T; vectorName; vectorP(T); vector>Score; vector,int>>Rank; for (int i = 0; i < T; i++) { string name; char c; cin >> name >> c; P[i] = c - 'A'; int num; if (Name.size() == 0) { Name.push_back(name); num = 0; vectorl(n); Score.push_back(l); Rank.push_back(make_pair(make_pair(0, i),0)); } else { for (int j = 0; j < Name.size(); j++) { if (Name[j] == name) { num = j; break; } if (j == Name.size() - 1) { Name.push_back(name); num = j+1; vectorl(n); Score.push_back(l); Rank.push_back(make_pair(make_pair(0, i),j+1)); } } } int score = 50 * L[P[i]] + 50 * L[P[i]] / (0.8 + 0.2*(float)(Speed[P[i]]+1)); Speed[P[i]]++; Score[num][P[i]] = score; Rank[num].first.first += score; Rank[num].first.second = T-i; } sort(Rank.begin(), Rank.end()); reverse(Rank.begin(), Rank.end()); for (int i = 0; i < Score.size(); i++) { cout << i + 1 << " " << Name[Rank[i].second] << " "; for (int j = 0; j < n; j++) { if (j)cout << " "; cout << Score[Rank[i].second][j]; } cout << " " << Rank[i].first.first << endl; } return 0; }