Menu
Coddy logo textTech

התפשטות

שיעור 31 מתוך 32 בקורס אתגרי תכנות של Coddy.

challenge icon

אתגר

קשה

בשכונה אחת כל שכן מחקה את הצבע של הבתים שנצבעו באפור. לכן, ביום שבו נצבעים כמה בתים באפור, כל שכן שגר ליד הבתים האלה אופקית או אנכית מחליט לצבוע את ביתו באותו אופן. הם צריכים חודש אחד לשם כך. לאחר מכן, הבתים שלידם אופקית או אנכית מחליטים לעשות את אותו הדבר, וגם הם צריכים חודש אחד, וכן הלאה.

####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;
}

כל השיעורים ביחידה אתגרי תכנות

תרגלו בעצמכם: קומפיילר C אונליין