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;
using System.Linq;
using System.Text;

namespace mondai0065
{
	class Program
	{
		class Trading
		{
			public	int		no;
			public	int		cnt;
			public	bool	before;
			public	bool	now;
		}

		static void Main(string[] args)
		{
			var	trading	= new List<Trading>();
			
			var	s	= "";
			
			while( string.IsNullOrEmpty( s = Console.ReadLine() ) == false ) {
				var	a	= Array.ConvertAll( s.Split( ',' ), aa => int.Parse( aa ) );
				var	i	= trading.FindIndex( b => b.no == a[ 0 ] );
				if( i != -1 ) {
					trading[ i ].cnt++;
				} else {
					var	t	= new Trading();
					t.no		= a[ 0 ];
					t.cnt		= 1;
					t.before	= true;
					trading.Add( t );
				}
			}

			while( (s = Console.ReadLine()) != null ) {
				var	a	= Array.ConvertAll( s.Split( ',' ), aa => int.Parse( aa ) );
				var	i	= trading.FindIndex( b => b.no == a[ 0 ] );
				if( i != -1 ) {
					trading[ i ].cnt++;
					trading[ i ].now	= true;
				}
			}

			trading.Sort( (t1, t2) => t1.no - t2.no );

			foreach( var t in trading ) {
				if( t.before && t.now ) {
					Console.WriteLine( "{0} {1}", t.no, t.cnt );
				}
			}
		}
	}
}