解説

この問題では与えられる点の数がわからないため、while文を使って実装していきます。
まずは、NN を受け取り、N×NN×N の全てのマスが . で埋められているキャンバスを用意します。

以下の手順を繰り返し、キャンバスに絵を描いていきます。

  1. ii の座標 (xi,yi)(x_i, y_i) を受け取ります。このとき、(xi,yi)=(0,0)(x_i, y_i) = (0, 0) ならば絵を描くことをやめます。
  2. キャンバスのマス (xi,yi)(x_i, y_i) に点 # を描きます。
  3. i2i \geq 2 のときに、点 i1i-1 と点 ii が同じ行または同じ列にある場合、次のように線を描きます。
    • xi1=xix_{i-1} = x_i の時 (同じ列に並んでいるとき)、min(yi1,yi)kmax(yi1,yi)\min (y_{i-1}, y_i) \leq k \leq \max(y_{i-1}, y_i) を満たす全ての整数 kk に対して、マス (xi,k)(x_i, k) に点 # を描きます。
    • yi1=yiy_{i-1} = y_i の時 (同じ行に並んでいるとき)、min(xi1,xi)kmax(xi1,xi)\min (x_{i-1}, x_i) \leq k \leq \max(x_{i-1}, x_i) を満たす全ての整数 kk に対して、マス (k,yi)(k, y_i) に点 # を描きます。

最後に、絵を描き終えたキャンバスを出力します。
なお、点を描くマスの表記が、解説では(x,y)\boldsymbol{(x, y)}となっていることに対し、実装では canvas[y][x] となることに注意してください。

解答例

解答例(C)

解答例(C++)

解答例(Python)