سلام دوست عزیز😃👋

به مسابقه «کدکاپ ۸ - انتخابی ۶» خوش آمدی!

  • اگر تا الان سوالی در سیستم داوری کوئرا حل نکردید حتماً نحوه‌ی کار با ورودی و خروجی را یاد بگیرید.
  • اگر ابهامی درباره‌ی قوانین شرکت در مسابقات این قسمت را بخوانید تا از شما تقلب گرفته نشود.
  • از قوانین مهم اینکه هرگونه استفاده از ابزارهای آماده‌ی تولید کد مثل chatGPT و یا تبادل کد با سایر شرکت‌کنندگان مسابقه ممنوع است و منجر به حذف شما از رقابت می‌شود.
  • برای اطلاع بیشتر از خطاهایی که سیستم داوری به شما می‌دهد این لینک را مطالعه کنید.
  • می‌توانید سوال‌ها و مشکلات خود را از بخش سوال بپرسید با ما در میان بگذارید.

موفق باشید و بهتون خوش بگذره 😉✌

⚡راستی! امشب ساعت ۱۹:۳۰ کلاس آنلاین حل سوالات مسابقه توی این لینک برگزار می‌شه و از هر استان، به ۳ نفر از شرکت‌کنندگان، دوره‌های دلخواه مقدماتی و یا پیشرفته کوئراکالج هدیه می‌شه.🎁

دزد و پلیس


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

شهر کدکاپ به صورت یک صفحه‌ی مختصات دو بعدی است. در این شهر آدم‌ها همیشه در نقطه‌هایی مثل (x,y)(x,y) قرار دارند که xx و yy دو عدد صحیح هستند. منظور از فاصله‌ی دو نقطه‌ی (x,y)(x, y) و (a,b)(a,b) عدد ax+by|a - x| + |b - y| است.

یک پلیس در نقطه‌ی (0,0)(0, 0) قرار دارد. یک دزد از بانکی که در نقطه‌ی (d,0)(d, 0) قرار دارد دزدی می‌کند. آژیر خطر به صدا در می‌آید و بازی دزد و پلیس شروع می‌شود.

توضیح تصویر

دزد در هر ثانیه یا در نقطه‌ی قبلی می‌ماند یا به یکی از نقطه‌های بالا، پایین، چپ یا راست می‌رود. یعنی اگر در نقطه‌ی (x,y)(x, y) باشد در ثانیه‌ی بعدی در یکی از نقطه‌های (x,y)(x, y)، (x+1,y)(x + 1, y)، (x1,y)(x - 1, y)، (x,y+1)(x, y + 1) یا (x,y1)(x, y - 1)‌ قرار دارد. در واقع دزد در یک ثانیه می‌تواند به نقطه‌ای که فاصله‌ی آن حداکثر ۱ است برود.

پلیس در هر ثانیه می‌تواند به نقطه‌ای که فاصله‌ی آن حداکثر ۲ است برود. می‌دانیم پلیس همیشه موقعیت دزد را می‌داند. او همیشه بر اساس موقعیت دزد نقطه‌ای که یک ثانیه بعد در آن است را مشخص می‌کند. اگر اکنون پلیس در نقطه‌ی (x,y)(x, y) و دزد نقطه‌ی (a,b)(a, b) باشد:

  • اگر xa>yb|x - a| \gt |y - b| باشد پلیس به یکی از نقطه‌های (x+2,y)(x + 2, y)، (x+1,y)(x + 1, y )، (x1,y)(x - 1, y) یا (x2,y)(x - 2, y) می‌رود که به دزد نزدیک‌تر است.
  • اگر xa<yb|x - a| \lt |y - b| باشد پلیس به یکی از نقطه‌های (x,y+2)(x, y+2)، (x,y+1)(x,y+1)، (x,y1)(x,y-1) یا (x,y2)(x,y-2) می‌رود که به دزد نزدیک‌تر است.
  • اگر xa=yb|x - a| = |y - b| باشد پلیس به یکی از نقطه‌های (x+1,y+1)(x + 1,y+1)، (x1,y+1)(x-1,y+1)، (x+1,y1)(x+1,y-1) یا (x1,y1)(x-1,y-1) می‌رود.

برای راحتی کار فرض کنید آن‌ها یکی در میان حرکتشان را انجام می‌دهند یعنی ابتدا پلیس، سپس دزد، مجدداً پلیس، سپس دزد و... . با توجه به قوانین حرکت آن‌ها می‌توان فهمید بالاخره پلیس به نقطه‌ای که دزد در آن قرار دارد می‌رسد و دزد دستگیر می‌شود.

حال شهردار کدکاپ می‌خواهد بداند با توجه به حالت‌های مختلفی که حرکت دزد دارد، چند نقطه در صفحه وجود دارد که ممکن است در آن نقطه دزد توسط پلیس دستگیر شود.

برای بهتر متوجه شدن خواسته‌ی سوال به توضیح نمونه‌ها توجه کنید.

ورودی🔗

در سطر اول ورودی، عدد صحیح و مثبت tt آمده که تعداد سناریوها را نشان می‌دهد. 1t1000001 \leq t \leq 100 \, 000

در tt سطر بعدی در هر سطر عدد صحیح و مثبت dd که موقعیت دزد را نشان می‌دهد داده می‌شود.

1d1091 \leq d \leq 10^9

خروجی🔗

خروجی tt سطر دارد که برای هر سناریو، تعداد نقاطی که دزد ممکن است در آن دستگیر شود را چاپ کنید.

مثال‌ها🔗

ورودی نمونه ۱🔗

3
2
5
9
Plain text

خروجی نمونه ۱🔗

1
21
85
Plain text
توضیح نمونه ۱

در این سناریو پلیس در نقطه‌ی (0,0)(0,0) و دزد در نقطه‌ی (2,0)(2,0) قرار دارد.

توضیح نمونه ۱

در ثانیه‌ی اول پلیس 20>00|2 - 0| \gt |0 - 0| را محاسبه کرده و تصمیم می‌گیرد به یکی از نقاط (2,0)(2,0)، (1,0)(1,0)، (1,0)(-1,0) یا (2,0)(-2,0) برود که به دزد نزدیک‌تر است. از آن‌جایی که دزد در نقطه‌ی (2,0)(2,0) قرار دارد قبل از اینکه حرکت کند دستگیر می‌شود.

چون فقط یک نقطه وجود دارد که دزد ممکن است در آن دستگیر شود، پاسخ برابر ۱ است.

توضیح نمونه ۲

توضیح نمونه ۲

در ثانیه‌ی اول پلیس 50>00|5 - 0| \gt |0 - 0| را محاسبه کرده و تصمیم می‌گیرد به یکی از نقاط (2,0)(2,0)، (1,0)(1,0)، (1,0)(-1,0) یا (2,0)(-2,0) برود که به دزد نزدیک‌تر است. از آن‌جایی که نقطه‌ی (2,0)(2,0) به دزد نزدیک‌تر است آن را انتخاب می‌کند. سپس نوبت دزد است که در ثانیه‌ی اول حرکت کند. فرض کنید او تصمیم می‌گیرد به نقطه‌ی بالایی یعنی (5,1)(5,1) برود.

در ثانیه‌ی دوم پلیس 52>01|5-2| \gt |0 - 1| را محاسبه کرده و تصمیم می‌گیرد به یکی از نقاط (4,0)(4,0)، (3,0)(3,0)، (1,0)(1,0) یا (0,0)(0,0) برود که به دزد نزیک‌تر است. از آن‌جایی که نقطه‌ی (4,0)(4,0) به دزد نزدیک‌تر است آن را انتخاب می‌کند. سپس نوبت دزد است که در ثانیه‌ی دوم حرکت کند. فرض کنید تصمیم می‌گیرد سر جای خودش یعنی (5,1)(5,1) بماند.

در ثانیه‌ی سوم پلیس 45=10|4-5| = |1-0| را محاسبه می‌کند و تصمیم می‌گیرد به یکی از نقاط (5,1)(5,1)، (5,1)(5,-1)، (3,1)(3,1) یا (3,1)(3,-1) برود که به دزد نزدیک‌تر است. از آن‌جایی که دزد در نقطه‌ی (5,1)(5,1) قرار دارد قبل از اینکه حرکت کند دستگیر می‌شود.

پس نقطه‌ی (5,1)(5,1) یکی از نقاط دستگیری دزد است. با توجه به حالت‌های مختلف برای تصمیم‌گیری حرکت دزد،‌ همه‌ی نقاط قرمز مشخص شده در شکل بالا ممکن است محل دستگیری دزد باشد.

توضیح نمونه ۳

توضیح نمونه ۳

مشابه قبل همه‌ی نقاطی که محل دستگیری دزد هستند در شکل بالا نشان داده شده.

ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.