نقطه‌ی گم‌شده


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

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

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

ورودی🔗

ورودی شامل ۷ خط است و در هر خط ۳ عدد آمده است.

در خط ii از ورودی سه عدد xix_i و yiy_i و ziz_i آمده است که نشانگر مختصات یکی از گوشه‌های مکعب‌مستطیل است.

0xi,yi,zi1000000 0 \leq x_i, y_i, z_i \leq 1000 \, 000

خروجی🔗

خروجی برنامه‌ی شما باید شامل یک خط باشد که در آن سه عدد xx و yy و zz مختصات گوشه‌ی گم‌شده را نشان دهد.

مثال‌ها🔗

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

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
Plain text

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

1 1 1
Plain text

توضیح تصویر

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

7 9 9
7 9 3
8 9 3
8 9 9
8 8 3
7 8 3
7 8 9
Plain text

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

8 8 9
Plain text

توضیح تصویر

اشتباهات متداول
چک کردن شرایط ورودی مسئله

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

if 1 <= n <= 100:
    # answer of problem
else:
    # print('invalid input')
Python
ابتدا همه‌ی ورودی را گرفتن و در نهایت همه‌ی خروجی را چاپ کردن

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

چاپ کردن موارد اضافه برای دریافت ورودی

لطفاً از چاپ کردن موارد اضافه مثل please enter a number برای دریافت ورودی پرهیز کنید. برای مثال در زبان پایتون نباید بنویسید:

input('please enter:')
Python
چند فایلی کد زدن

برای زبان‌هایی مثل جاوا نباید در بالای کد شما آدرس پکیج داده شود. برای مثال در بالای کد خود نباید بنویسید:

package ir.quera.contest;
Java
استفاده از چند Scanner برای دریافت ورودی

در زبان جاوا، باید فقط یک شئ از جنس Scanner تعریف کنید و همه‌ی ورودی‌ها را با آن دریافت کنید.

ربع فیل


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

یک صفحه‌ی شطرنجی n×mn \times m را در نظر بگیرید. سطرهای آن را از بالا به پایین با اعداد 11 تا nn و ستون‌های آن را از چپ به راست با اعداد 11 تا mm شماره‌گذاری می‌کنیم. خانه‌ی سطر iiام و ستون jjام از این جدول را به صورت زوج مرتب (i,j)(i, j) نشان می‌دهیم.

دو نوع مهره داریم «ربع فیل شمال غربی» و «ربع فیل جنوب شرقی» که به ترتیب با دو حرف A و B نشان می‌دهیم.

  • اگر یک مهره‌ی نوع A در خانه‌ی (i,j)(i, j) جدول قرار بگیرد، همه‌ی خانه‌های (i1,j1)(i - 1, j - 1)، (i2,j2)(i - 2, j - 2) و... را در صورت وجود تهدید می‌کند.

  • اگر یک مهره‌ی نوع B در خانه‌ی (i,j)(i, j) جدول قرار بگیرد، همه‌ی خانه‌های (i+1,j+1)(i + 1, j + 1)، (i+2,j+2)(i + 2, j + 2) و... را در صورت وجود تهدید می‌کند.

حال می‌خواهیم در هر خانه از این جدول حداکثر یک ربع فیل از نوع A یا B قرار دهیم به طوری که هیچ دوتایی یکدیگر را تهدید نکنند.

از شما می‌خواهیم چیدمانی از این مهره‌ها را در جدول قرار دهید، که حداکثر تعداد مهره استفاده شود. به عبارت دیگر می‌خواهیم تعداد خانه‌های خالی جدول کمینه باشد. (بنابراین مجموع تعداد مهره‌های نوع A و B باید بیشینه باشد و تعداد هر کدام لزومی ندارد ماکسیمم باشد.)

اگر چند حالت برای رسیدن به جواب وجود دارد یکی را به دلخواه چاپ کنید.

ورودی🔗

در تنها سطر ورودی، دو عدد صحیح و مثبت nn و mm داده می‌شود که به ترتیب تعداد سطرها و ستون‌های جدول را نشان می‌دهد.

1n,m1001 \leq n, m \leq 100

خروجی🔗

در nn سطر و در هر سطر mm کاراکتر چاپ کنید. کاراکتر jjام در سطر iiام جواب وضعیت (i,j)(i, j) را نشان می‌دهد.

اگر آن خانه خالی بود .، اگر مهره‌ی نوعA بود A و در غیر این‌صورت B را چاپ کنید. توجه کنید هر جواب درستی، قابل قبول است.

مثال‌ها🔗

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

3 4
Plain text

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

.AAB
AABB
BBB.
Plain text

توضیح تصویر

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

2 5
Plain text

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

AAAAA
BBBBB
Plain text

تقسیم کیک


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

در یک مهمانی nn عدد کیک با اندازه برابر داریم. kk مهمان به این مهمانی می‌آیند و میزبان می‌خواهد کیک‌ها را طوری تقسیم کند که به هر مهمان مقدار برابری کیک برسد و هیچ کیکی باقی نماند.

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

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

ورودی🔗

در خط اول ورودی ابتدا عدد tt که نشان‌دهنده‌ی تعداد مهمانی‌های برگزار شده، آمده‌است.

1t1000001 \le t \le 100 \, 000

سپس در tt خط بعدی، در هر خط دو عدد nn و kk به ترتیب داده می‌شوند که اولی نشان‌دهنده‌ی تعداد کیک‌های اولیه و دومی تعداد مهمان‌ها است. 1n,k1091 \le n, k \le 10^9

خروجی🔗

برای هر مهمانی اگر تقسیم کیک امکان‌پذیر بود، کم‌ترین تعداد برش لازم و در غیر این صورت عدد -1 را در یک خط به عنوان خروجی چاپ کنید.

مثال🔗

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

3
10 3
4 8
7 16
Plain text

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

-1
1
4
Plain text

سناریو اول. در سناریو اول n=10n = 10 کیک و k=3k = 3 مهمان داریم. پس باید به هر مهمان اندازه‌ی 103=3.333\frac{10}{3} = 3.333\cdots برابر یک کیک کامل برسد. هر بار می‌توانیم فقط قطعات کیک را نصف کنیم پس هیچ وقت نمی‌توانیم با تعدادی برش و برداشتن چند قطعه به این عدد برسیم.

سناریو دوم. در سناریو اول n=4n = 4 کیک و k=8k = 8 مهمان داریم. پس باید به هر مهمان اندازه‌ی 48=0.5\frac{4}{8} = 0.5 برابر یک کیک کامل برسد. پس می‌توانیم با یک عملیات همه‌ی کیک‌ها را نصف کنیم و به هر مهمان یک قطعه بدهیم.

سناریو سوم. در سناریو اول n=7n = 7 کیک و k=16k = 16 مهمان داریم. پس باید به هر مهمان اندازه‌ی 716=0.4375\frac{7}{16} = 0.4375 برابر یک کیک کامل برسد. پس می‌توانیم با چهار عملیات هر کیک را به ۱۶ قسمت تقسیم کنیم (هر بار همه قطعات را کنار هم می‌گذاریم و با یک عملیات همه را نصف می‌کنیم.) سپس به هر مهمان ۷ قطعه کیک می‌دهیم.

مشق شب


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

منظور از مشق یک مجموعه kk عضوی جمع k2\lfloor\frac{k}{2}\rfloor عضو بزرگ‌تر منهای k2\lceil\frac{k}{2}\rceil عضو کوچک‌تر آن است. برای مثال مشق مجموعه‌ی {2,3,7}\{2, 3, 7\} برابر 732=27-3-2=2 و مشق مجموعه‌ی 1,2,3,4{1, 2, 3, 4} برابر 4+321=44 + 3 - 2 - 1 = 4 است. مشق مجموعه‌ی تهی را صفر در نظر بگیرید.

اعضای یک مجموعه‌ی nn عضوی از اعداد صحیح را داریم، می‌خواهیم به ازای تمام 2n2^n زیرمجموعه ممکن از این مجموعه، مشق آن‌ها را با هم جمع کنیم. از شما می‌خواهیم برنامه‌ای بنویسید که این مقدار را حساب کند. (برای بهتر متوجه شدن سوال، مثال اول را مطالعه کنید.)

چون ممکن است حاصل خیلی بزرگ باشد، باقی‌مانده‌ی پاسخ را بر 109+710^9 + 7 محاسبه کنید.

ورودی🔗

در خط اول عدد nn و سپس در خط بعد nn عدد صحیح aia_i با فاصله از هم ورودی داده می‌شوند.

1n50001 \le n \le 5000 1ai10000001 \le a_i \le 1000 \, 000

تضمین می‌شود که a1<a2<<ana_1 \lt a_2 \lt \dots \lt a_n\, باشد.

خروجی🔗

حاصل جمع مورد نظر را خروجی دهید.

مثال🔗

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

4
1 2 3 7
Plain text

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

22
Plain text

{}0{2}2{7}7{1}1{3}3{2,7}72=5{1,2}21=1{2,3}32=1{1,7}71=6{3,7}73=4{1,3}31=2{1,3,7}731=3{1,2,3}321=0{2,3,7}732=2{1,2,7}721=4{1,2,3,7}7+321=7 \begin{array}{ccc} \{\} & \to & 0 \\ \{ 2 \} & \to & -2 \\ \{ 7 \} & \to & -7 \\ \{ 1 \} & \to & -1 \\ \{ 3 \} & \to & -3 \\ \{ 2, 7 \} & \to & 7 - 2 = 5 \\ \{ 1, 2 \} & \to & 2 - 1 = 1 \\ \{ 2, 3 \} & \to & 3 - 2 = 1 \\ \{ 1, 7 \} & \to & 7 - 1 = 6 \\ \{ 3, 7 \} & \to & 7 - 3 = 4 \\ \{ 1, 3 \} & \to & 3 - 1 = 2 \\ \{ 1, 3, 7 \} & \to & 7 - 3 - 1 = 3\\ \{ 1, 2, 3 \} & \to & 3 - 2 - 1 = 0 \\ \{ 2, 3, 7 \} & \to & 7 - 3 - 2 = 2 \\ \{ 1, 2, 7 \} & \to & 7 - 2 - 1 = 4 \\ \{ 1, 2, 3, 7 \} & \to & 7 + 3 - 2 - 1 = 7\\ \end{array}

بنابراین حاصل جمع برابر است با: 02713+5+1+1+6+4+2+3+0+2+4+7=220 - 2 - 7 -1 -3 + 5 + 1 + 1 + 6 + 4 + 2 + 3 + 0 + 2 + 4 + 7 = 22

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

3
1 2 3
Plain text

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

1000000005
Plain text

{}0{1}1{2}2{3}3{1,2}21=1{1,3}31=2{2,3}32=1{1,2,3}321=0 \begin{array}{ccc} \{\} & \to & 0 \\ \{ 1 \} & \to & -1 \\ \{ 2 \} & \to & -2 \\ \{ 3 \} & \to & -3 \\ \{ 1, 2 \} & \to & 2 - 1 = 1\\ \{ 1, 3 \} & \to & 3 - 1 = 2 \\ \{ 2, 3 \} & \to & 3 - 2 = 1 \\ \{ 1, 2, 3 \} & \to & 3 - 2 - 1 = 0 \\ \end{array}

بنابراین حاصل جمع برابر است با: 0123+1+2+1+0=20 - 1 -2 -3 + 1 + 2 + 1 + 0 = -2

توجه کنید باقی‌مانده‌ی 2-2 بر 1000,000,0071000,000,007 برابر 1000,000,0051000,000,005 است.

انقلاب


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

نقشه‌ی کشور احسان شامل nn شهر است که با mm جاده به هم متصل شده‌اند. احسان که خیلی از تجزیه‌ی کشور به دست انقلابیون می‌ترسد، می‌خواهد میزان مقاومت نقشه به تجزیه را بررسی کند. می‌گوییم کشور در معرض تجزیه است اگر جاده‌ای وجود داشته باشد که با حذفش، تمامی شهرهای یک بخش توسط شورشی‌ها تصرف شده باشند. از بین تمام 2n2^n حالتی که شورشی‌ها می‌توانند تعدادی از شهرها را تصرف کرده باشند، تعداد حالاتی را می‌خواهیم بدانیم که کشور در معرض تجزیه نباشد.

باقی‌مانده این عدد را به 109+710^9+7 چاپ کنید.

ورودی🔗

خط اول ورودی تنها شامل دو عدد طبیعی nn و mm است که با فاصله از هم آمده‌اند. در mm خط بعدی، در هر خط دو عدد طبیعی آمده است که نشان دهنده‌ی دو شهری است که این جاده به هم متصل می‌کند. 1n1000001 \le n \le 100 \, 000 1m3000001 \le m \le 300 \, 000

تضمین می‌شود از هر شهر با استفاده از جاده‌ها می‌توان به هر شهر دیگر سفر کرد همچنین هیچ جاده‌ای یک شهر را به خودش متصل نمی‌کند و بین هیچ دو شهری بیش از یک جاده وجود ندارد.

خروجی🔗

باقی‌مانده‌ی تعداد حالاتی که کشور در معرض تجزیه نیست را به 109+710^9+7 چاپ کنید.

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

3 2
1 2
2 3
Plain text

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

2
Plain text

توضیح نمونه ۱

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

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

4 4
1 2
2 3
3 1
1 4
Plain text

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

7
Plain text

ساخت پل


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

علی مدیر یک پروژه پل‌سازی است که به پایانش نزدیک شده است. در این پروژه ابتدا nn پایه بتنی بر روی زمین ساخته شده است، به طوری که پایه‌ی iiام در مکان xix_i قرار دارد. برای تکمیل پروژه باید مسیر بین پایه‌ی اول (x1x_1) و پایه‌ی آخر (xnx_n) با تعدادی تخته‌‌چوبی به طول TT به هم متصل شوند. طبق قوانین پل‌سازی، زیر هر تخته‌چوب باید حداقل kk پایه‌ی بتنی وجود داشته باشد، تا تخته‌چوب، سفت در جای خود قرار بگیرد. علی می‌خواهد بداند به ازای تمام kkهای بین 11 و nn در صورتی که می‌توان پل را ساخت، به حداقل چند تخته‌چوب نیاز دارد.

حالت خاص

در تصویر بالا جواب مسئله برای k=2k=2 برای تست اول نشان داده شده است.

توجه کنید عرض ستون‌ها را صفر در نظر می‌گیریم. فرض کنید یک تخته‌چوب یک بازه‌ی بسته مثل [x,x+T][x, x + T] را متصل می‌کند و ستون‌های شامل این بازه، زیر آن در نظر گرفته می‌شود. شما باید بازه‌ی [x1,xn][x_1, x_n] را متصل کنید و ممکن است تخته چوب‌ها اشتراک داشته باشند.

ورودی🔗

در خط اول ورودی دو عدد طبیعی nn و TT با فاصله از هم آمده‌ است.

1n1000001 \le n \le 100 \, 000 1T1091 \le T \le 10^9

در خط دوم ورودی nn عدد آمده است که مکان پایه‌های بتنی پل را نشان می‌دهد. عدد iiام آن برابر xix_i است. 0xi1090 \le x_i \le 10^9

تضمین می‌شود که x1<x2<<xnx_1 \lt x_2 \lt \dots \lt x_n\, باشد.

خروجی🔗

در تنها خط خروجی، nn عدد خروجی دهید که نشان‌دهنده‌ی جواب مسئله، به ترتیب به ازای kkهای 11 تا nn باشد و اگر ساختن پل ممکن نبود، به‌جای تعداد تخته‌چوب‌ها -1 چاپ کنید.

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

4 2
1 2 4 5
Plain text

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

2 2 -1 -1 
Plain text

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

4 10
0 1 2 20
Plain text

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

2 -1 -1 -1 
Plain text