using System; using System.Collections.Generic; using System.Linq; namespace C { class Program { static void Main(string[] args) { var N = int.Parse(Console.ReadLine()); var Ls = Console.ReadLine().Split(' ').Select(l => int.Parse(l)).ToArray(); var T = int.Parse(Console.ReadLine()); var NamePs = Enumerable.Range(0, T) .Select(i => Console.ReadLine().Split(' ')) .ToArray(); var results = new Dictionary(); var juni = Enumerable.Range(0, N).Select(i => 1).ToArray(); var update = T; foreach (var nameP in NamePs) { var name = nameP[0]; var p = (int)(nameP[1][0]) - 65; if (!results.ContainsKey(name)) { results.Add(name, new int[N + 2]); } results[name][p] = (int)Math.Floor((double)(50 * Ls[p]) + (double)(50 * Ls[p]) / (0.8 + 0.2 * (double)juni[p])); results[name][N] = T; juni[p]++; T--; } foreach (var result in results) { result.Value[N + 1] = result.Value.Sum(); } var ordered = results.OrderByDescending(r => r.Value[N + 1]).ThenByDescending(r => r.Value[N]); var count = 1; foreach (var result in ordered) { Console.WriteLine(string.Join(" ", new[] { count.ToString(), result.Key, string.Join(" ", result.Value.Take(N)), result.Value.Take(N).Sum().ToString() })); count++; } } } }