問題文に不備があったため、一部変更しました。誠に申し訳ございません。(15:55)
問題文
N×N の N2 マスからなるキャンバスがあります。
キャンバスの上から H 行目 (1≤H≤N) 、左から W 列目 (1≤W≤N) のマスをマス(W,H) と呼ぶことにします。
いくつかの点 i(1,2,…) を描くマス (xi,yi) が与えられます。
点の個数は入力として与えられないことに注意してください。
以下の手順でキャンバスに絵を描いてください。
- キャンバスのマス (xi,yi) に点 i を描く。ただし、(xi,yi)=(0,0) の時に絵を描くことをやめる。
- i≥2 のときに、以下の手順を行う。
- 点 i−1 が、ペイントした点 i と同じ列または行だった場合、点 i と点 i−1 を結ぶ線を描く。
- ここで線を描くとは、点 i と点 i−1 の間にあるマス全てに点を描くことをいいます。
- このとき点 i と点 i−1 の間にすでに点が描かれていた場合、上から点を塗り重ね、点が描かれたマスとして扱います。
ここで、点 i と点 j を結ぶ線を描くことを、次のように定義します。
- xi=xj の時、min(yi,yj)≤k≤max(yi,yj) を満たす全ての整数 k に対して、マス (xi,k) に点を描く。
- yi=yj の時、min(xi,xj)≤k≤max(xi,xj) を満たす全ての整数 k に対して、マス (k,yi) に点を描く。
絵の描かれたキャンバスを出力の形式に従って出力してください。
制約
- 1≤N≤100
- 1≤xi,yi≤N (ただし、最後は必ず (0,0) が与えられる)
- (xi,yi)=(xj,yj)(i=j)
- 入力はすべて整数
入力
出力
N 行出力せよ。
点が描かれたマスには #
を、それ以外のマスには .
を出力せよ。
i(1≤i≤N) 行目の j(1≤j≤N) 文字目には、マス (i,j) に描かれたマスの情報を出力してください。
入力例 1
4
1 1
1 4
4 4
4 1
2 1
0 0
出力例 1
- (1,1) に点 1 を描きます。
- (1,4) に点 2 を描きます。点 1 と点 2 が共に 1 列目にあるので、点 1 と点 2 を結ぶ線を描きます。
- (4,4) に点 3 を描きます。点 2 と点 3 が共に 4 行目にあるので、点 2 と点 3 を結ぶ線を描きます。
- (4,1) に点 4 を描きます。点 3 と点 4 が共に 4 列目にあるので、点 3 と点 4 を結ぶ線を描きます。
- (2,1) に点 5 を描きます。点 4 と点 5 が共に 1 行目にあるので、点 4 と点 5 を結ぶ線を描きます。
- (0,0) が与えられたので絵を描くことをやめます。
キャンバスの各マスは以下のように変化します。
#... #... #... #..# ####
.... #... #... #..# #..#
.... → #... → #... → #..# → #..#
.... #... #### #### ####
入力例 2
5
3 3
2 3
2 4
4 4
4 2
1 2
1 5
5 5
5 1
1 1
0 0
出力例 2
#####
#####
#####
#####
#####
入力例 3
12
4 1
6 1
3 2
3 6
1 3
2 3
2 4
5 3
7 2
8 3
12 3
8 5
10 5
11 4
11 7
12 4
4 7
5 8
10 8
5 9
5 12
4 12
8 9
8 12
7 12
0 0
出力例 3
...###......
..#...#.....
###.#..#####
.##.......##
..#....####.
..#.......#.
...#......#.
....######..
....#..#....
....#..#....
....#..#....
...##.##....