Spreading
Coddyの「コーディング問題」コースのレッスン 31/32。
チャレンジ
難しいある近隣では、すべての住民がグレーに塗られた家の色を真似します。そのため、いくつかの家がグレーに塗られた日、それらの家の水平方向および垂直方向に隣接するすべての住民が、自分の家も同じように塗ることを決めます。それには1ヶ月かかります。その後、それらに水平方向および垂直方向に隣接する家々も同じことを決め、同様に1ヶ月かかり、これが繰り返されます。
####X ##XXX #XXXX XXXXX
##X## #XXXX XXXXX XXXXX
##### ##X## #XXXX XXXXX
Mo.1 Mo.2 Mo.3 Mo.4
見ての通り、最初は2軒の家だけがグレーに塗られています([1,5] と [2,3])。1ヶ月後、すでに塗られている家の上下左右にある8軒の家がグレーに塗られます。2ヶ月後には13軒の家がグレーに塗られ、3ヶ月後には近隣のすべての家がグレーに塗られます。
入力として、近隣の高さと幅を表す2つの自然数 H と W が与えられます。次の行には、グレーに塗られる必要がある家の総数を表す自然数 N が与えられます。その次の行には自然数 M が与えられ、続く M 行には、すでにグレーに塗られている家の位置を表す2つの自然数 X と Y が与えられます。
合計 N 軒の家がグレーに塗られるまでに何ヶ月かかるかを出力してください(最初に塗られている家も含みます)。
Input
3 5
7
2
1 5
2 3
Output
1
Explanation #1: 上記のテキストにある例です。近隣の高さは3、幅は5です。合計7軒の家がグレーに塗られるまでに何ヶ月かかるかを出力する必要があります。すでに2軒の家(位置 [1, 5] と [2,3])がグレーに塗られています。したがって、合計7軒の家がグレーに塗られるには1ヶ月必要です。
自分で試してみよう
#include <stdio.h>
int main() {
// ここにコードを記述します
return 0;
}
コーディング問題のすべてのレッスン
1Course Introduction
Introduction