(C) Copyright by IOI日本委員会 1994 All rights reserved.


問題4

20点

 n×n の格子状のます目があり、その各々には整数が一つずつ書かれている。 下図に n=5 の場合の一例を示す。

      ------------------------
     |  2 |  2 |  3 |  0 | 65 |
     |----+----+----+----+----|
     |  0 |  2 | 10 | 10 | 65 |
     |----+----+----+----+----|
     |  2 |  1 |  3 | 10 | 10 |
     |----+----+----+----+----|
     |  2 |  1 |  3 |  3 |  3 |
     |----+----+----+----+----|
     | 88 | 88 |  3 | 53 |  8 |
      ------------------------
 あるます目の上下左右4個のます目それぞれはそのます目に隣接 しているという。2つのます目が同じグループのメンバーである ための条件は、それらが隣接していて、かつ、同じ整数(この整数をその グループの指数と呼ぶ)が書かれていること、と定義する。
 ASCIIテキストファイルINPUT.DATに、格子状ます目に関するデータが 下記の例のように書き込まれている。すなわち、データの1行目には格子の サイズ n が書かれており、2行目からの連続する n 行各々には、整数間の 区切りとして1つ以上の空白を間に置いて n 個の整数が書かれている。 これを読み込み、グループの「指数」と「メンバー数」との対すべてを 求め、指数の小さい順に、かつ、同じ指数を持つグループは要素数の 少ない順に、ASCIIテキストファイルOUTPUT.SOLに出力するプログラムを書け。 例えば、INPUT.DATに書かれているデータが
 7
 2  2  2  0  0  0  0
 2  1  2  2  0  0  0
 2  1  1  2  2  0  2
 3  3  0  0  2  2  0
 0  3  3  0  0  0  2
 3  3  0  0  0  2  2
15 15  3  3  3  2  2
の場合、OUTPUT.SOLに
0 1
0 1
0 8
0 8
1 3
2 1
2 5
2 11
3 3
3 6
15 2
のように出力する。
 0 < n≦100、指数は0から255までの整数、データの1行の長さは 改行文字まで含めて最大255とし、入力データにエラーはないものとして、 エラーチェックはしなくてもよい。
 アルゴリズムの要点を述べ、それに基づいたプログラムを書け。