カードの文字列を読み込みながら、その文字列が言われたとき何円もらえるかを計算しておく。
using System; using System.Collections.Generic; using System.Linq; namespace ABC091B { class Program { static void Main(string[] args) { var N = int.Parse(Console.ReadLine()); var cards = new Dictionary<string, int>(); for (var i = 0; i < N; i++) { var s = Console.ReadLine(); if (cards.ContainsKey(s)) { cards[s]++; } else { cards[s] = 1; } } var M = int.Parse(Console.ReadLine()); for (var i = 0; i < M; i++) { var s = Console.ReadLine(); if (cards.ContainsKey(s)) { cards[s]--; } else { cards[s] = -1; } } var answer = Math.Max(0, cards.Values.Max()); Console.WriteLine(answer); } } }