dictionaryのソート
Linqって便利だわ
using System; using System.Collections.Generic; using System.Linq; public class Hello{ public static void Main(){ int line =int.Parse(System.Console.ReadLine()); var myTable = new Dictionary<string, int>(); for (int i = 0;i < line;i++) { string[] line2 =System.Console.ReadLine().ToString().Split(' '); // 同じkeyがある場合はvalueを加算する if (myTable.ContainsKey(line2[0])) { myTable[line2[0]] += int.Parse(line2[1]); } else { myTable.Add(line2[0], int.Parse(line2[1])); } } //value降順でソート IOrderedEnumerable<KeyValuePair<string, int>> sortTable = myTable.OrderByDescending(pair => pair.Value); foreach(KeyValuePair<string, int> item in sortTable) { Console.WriteLine("{0} {1}", item.Key, item.Value); } Console.ReadKey(); } }