התפשטות
שיעור 31 מתוך 32 בקורס אתגרי תכנות של Coddy.
אתגר
קשהבשכונה אחת כל שכן מחקה את הצבע של הבתים שנצבעו באפור. לכן, ביום שבו נצבעים כמה בתים באפור, כל שכן שגר ליד הבתים האלה אופקית או אנכית מחליט לצבוע את ביתו באותו אופן. הם צריכים חודש אחד לשם כך. לאחר מכן, הבתים שלידם אופקית או אנכית מחליטים לעשות את אותו הדבר, וגם הם צריכים חודש אחד, וכן הלאה.
####X ##XXX #XXXX XXXXX
##X## #XXXX XXXXX XXXXX
##### ##X## #XXXX XXXXX
חודש 1 חודש 2 חודש 3 חודש 4
כפי שניתן לראות, בתחילה רק שני בתים צבועים באפור ([1,5] ו-[2,3]). לאחר חודש, 8 בתים צבועים באפור: אלה שמעל, מתחת, מימין ומשמאל לבתים שכבר נצבעו. לאחר חודשיים 13 בתים צבועים באפור, ולאחר 3 חודשים כל הבתים בשכונה צבועים באפור.
נתונים שני מספרים טבעיים H ו-W בקלט, המייצגים את הגובה והרוחב של השכונה. בשורה הבאה נתון מספר טבעי N המייצג את מספר הבתים שצריך לצבוע באפור. בשורה הבאה נתון מספר טבעי M, וב-M השורות הבאות נתונים שני מספרים טבעיים X ו-Y המייצגים את המיקומים של הבתים שכבר צבועים באפור.
הציגו כמה חודשים נדרשים כדי לצבוע באפור בסך הכול N בתים (כולל הבתים שנצבעו באפור בתחילה).
קלט
3 5
7
2
1 5
2 3
פלט
1
הסבר #1: זו הדוגמה שהובאה בטקסט למעלה. כלומר, גובה השכונה הוא 3 ורוחבה 5. עלינו להציג כמה חודשים נדרשים כדי לצבוע באפור בסך הכול 7 בתים. יש כבר 2 בתים צבועים באפור, והם נמצאים במיקומים [1, 5] ו-[2,3]. לכן נדרש חודש אחד כדי לצבוע באפור בסך הכול 7 בתים.
נסו בעצמכם
#include <stdio.h>
int main() {
// כתבו כאן קוד
return 0;
}
כל השיעורים ביחידה אתגרי תכנות
1מבוא לקורס
מבואתרגלו בעצמכם: קומפיילר C אונליין