Problem:
取引

取引先の顧客番号と取引日を月ごとに記録したデータがあります。今月のデータと先月のデータを読み込んで、先月から２ヶ月連続で取引のある会社の顧客番号と取引のあった回数を出力するプログラムを作成してください。ただし、月々の取引先数は 1,000 社以内です。

Input

今月のデータと、先月のデータが１行の空行で区切られて与えられます。それぞれのデータは以下のような形式で与えられます。

c1,d1
c2,d2
...
...

ci (1 ≤ ci ≤ 1,000) は顧客番号を表す整数、 di (1 ≤ di ≤ 31) は取引日を表す整数です。

Output

２ヶ月連続で取引のある会社について、顧客番号が小さい順に顧客番号と取引回数の総数を空白で区切って出力します。

Sample Input

123,10
56,12
34,14

123,3
56,4
123,5

Output for the Sample Input

56 2
123 3

Solution in C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;

namespace AOJ.Volume0
{
    public class Trading
    {
        public static void Main()
        {
            var company = new Dictionary<int, int>();
            var output = new List<int>();

            // 今月
            while (true)
            {
                var input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) { break; }

                int id = int.Parse(input.Substring(0, input.IndexOf(',')));
                if (company.ContainsKey(id)) { company[id]++; }
                else { company.Add(id, 1); }
            }

            // 先月
            while (true)
            {
                var input = Console.ReadLine();
                if (string.IsNullOrEmpty(input)) { break; }

                int id = int.Parse(input.Substring(0, input.IndexOf(',')));
                // 出現回数をカウントするが、今月取引がなかった場合は何もしない
                if (company.ContainsKey(id)) { company[id]++; }
                // 出力リストに入っていない場合は今月の取引があるかチェック
                if (!output.Contains(id))
                {
                    if (company.ContainsKey(id)) { output.Add(id); }
                }
            }

            // 出力
            output.Sort();
            foreach (var id in output)
            {
                Console.WriteLine(string.Format("{0} {1}", id, company[id]));
            }
        }
    }
}