مشق مهتاب


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

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

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

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

ورودی🔗

در تنها سطر ورودی، عدد صحیح و مثبت nn داده می‌شود. 2n1002 \leq n \leq 100

خروجی🔗

در تنها سطر خروجی، یک عدد صحیح برابر عدد نهایی که باید مهتاب بنویسد را چاپ کنید.

مثال🔗

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

10
Plain text

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

25
Plain text

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

7
Plain text

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

9
Plain text

فرار دزد از سگ نگهبان


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

جدولی n×mn \times m داریم. سطرهای این جدول از بالا به پایین با اعداد ۱ تا nn و ستون‌های این جدول از چپ به راست با اعداد ۱ تا mm شماره‌گذاری شده‌اند. هر خانه از این جدول را می‌توان با یک زوج مرتب (r,c)(r, c) نشان داد که rr شماره‌ی سطر و cc شماره‌ی ستون جدول را نشان می‌دهد.

دزدی وارد این جدول شده و از خانه‌ی (1,1)(1,1) آن دزدی کرده و قصد دارد به خانه (n,m)(n,m) برود تا بتواند از جدول خارج شود. این دزد در یک حرکت می‌تواند از یک خانه به خانه‌ی بالا، پایین، چپ یا راست (در صورت وجود) برود.

توضیح تصویر

یک سگ نگهبان، در خانه‌ی (x,y)(x, y) این جدول، زندگی می‌کند. این سگ از خانه‌های با فاصله‌ی حداکثر ss از خانه‌اش محافظت می‌کند. در اینجا منظور از فاصله‌ی خانه‌ی (a,b)(a, b) تا خانه‌ی (c,d)(c, d) یعنی کمترین تعداد حرکتی که دزد نیاز دارد تا از خانه‌ی (a,b)(a, b) به خانه‌ی (c,d)(c, d) برسد.

می‌دانیم اگر دزد به خانه‌ای برود که سگ نگهبان از آن محافظت می‌کند، اسیر می‌شود.حال به دزد بگویید آیا می‌تواند راهی از خانه‌ی (1,1)(1, 1) به خانه‌ی (n,m)(n, m) پیدا کند یا نه.

ورودی🔗

در خط اول ورودی، عدد صحیح tt آمده که تعداد پرسش‌ها را نشان می‌دهد. 1t105 1 \leq t\leq 10^5

سپس در tt خط بعدی، در هر خط به ترتیب پنج عدد صحیح n,m,x,y,sn , m , x , y , s به شما داده می‌شود.

1xn1091 \leq x \leq n \leq 10^9 1ym109 1 \leq y \leq m \leq 10^9 1s1091 \leq s \leq 10^9

خروجی🔗

خروجی شما باید شامل tt خط باشد. برای هر پرسش اگر دزد می‌تواند به خانه (n,m)(n,m) برود YES و در غیر این صورت NO خروجی دهید.

مثال‌ها🔗

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

2
4 4 2 3 1
5 6 3 3 2
Plain text

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

YES
NO
Plain text

توضیح تصویر

شوالیه‌ی تاریکی و جوکر


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

گاتهام خیابانی است با طول بی‌نهایت که از نقطه ۰ شروع می‌شود. اگر مبدا زمانی ما از ابتدای ثانیه ۱ آغاز شود، می‌دانیم که جوکر در هر لحظه از شروع تا پایان ثانیه ttام، (به مدت ۱ ثانیه) در نقطه‌ای با فاصله LL از ابتدای خیابان ایستاده است. به طوری که تمام عرض خیابان را اشغال کرده است.

در نقطه ۰ خیابان، بتمن nn ماشین دارد که قرار است به ترتیب در ابتدای هر ثانیه یکی از آن‌ها از نقطه ۰ خیابان حرکت کند. به این معنا که در ابتدای ثانیه ۱ یکی از ماشین‌ها حرکت می‌کند، در ابتدای ثانیه ۲ دیگری حرکت می‌کند و همین‌طور ادامه می‌یابد تا جایی که در ابتدای ثانیه nnام، آخرین ماشین حرکت می‌کند. سرعت تمام ماشین‌ها به شما داده شده است. هدف بتمن این است که جوکر حتماً توسط یکی از ماشین‌ها زیر گرفته شود.

در قرن جدید، ماشین‌ها خودشان رانندگی می‌کنند و ممکن است قبل از رسیدن به جوکر ترمز کنند. بتمن می‌خواهد طوری ماشین‌ها را ترتیب دهد که احتمال مرگ جوکر بیشترین مقدار ممکن باشد. به عبارت دیگر، بیشترین تعداد ماشین‌ها که در هر بازه زمانی از ابتدای ثانیه ۱ تا انتهای ثانیه tt، می‌توانند از روی جوکر عبور کنند، باید تعیین شود.

ورودی🔗

خط اول ورودی عدد طبیعی و مثبت qq تعداد سناریو ها به شما داده می‌شود.

1q1051 \leq q \leq 10^5

در خط اول هر سناریو به ترتیب سه عدد طبیعی و مثبت nn، LL و tt به شما ورودی داده می‌شوند.

1n105 1 \leq n \leq 10^5

در خط دوم هر سناریو nn عدد طبیعی و مثبت v1,v2,,vnv_1, v_2, \dots, v_n ورودی داده می‌شوند که هر کدام سرعت یکی از ماشین‌های بتمن را نشان می‌دهد. 1vi,t,L109 1 \leq v_i, t, L\leq 10^9

i=1qni105 \sum_{i=1}^{q}n_i \leq10^5

خروجی🔗

خروجی qq خط دارد. برای هر سناریو، در یک خط باید بیشترین تعداد ماشین‌هایی که ممکن است در قسمتی از حرکتشان از روی جوکر عبور کنند، چاپ شود.

مثال‌ها🔗

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

5
2 1 1
1 1
3 18 5
3 4 5
3 9 1
1 3 9
3 24 2
4 12 12
3 10 5
10 5 13
Plain text

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

1
2
1
1
0
Plain text

خانه‌های نورگیر


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

می‌خواهیم nn ساختمان h1,h2,,hnh_1, h_2, \dots, h_n طبقه‌ای کنار هم در یک ردیف بسازیم.

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

هدف این است که ساختمان‌ها را به ترتیبی بچینیم که تعداد واحدهای نورگیر به حداکثر برسد. تعداد حداکثری واحدهای نورگیر را پیدا کنید.

ورودی🔗

در خط اول ورودی عدد nn تعداد ساختمان ها داده می شود. 1n105 1 \leq n\leq 10^5

سپس در خط بعدی به ترتیب h1h_1 تا hnh_n داده می شود. 1hi109 1 \leq h_i\leq 10^9

خروجی🔗

در یک خط، حداکثر تعداد واحد های نورگیر را خروجی دهید.

مثال‌ها🔗

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

3
1 3 2
Plain text

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

5
Plain text

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

5
1 3 3 3 3
Plain text

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

10
Plain text

ارزش جایگشت‌ها


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

فرض کنید می‌خواهیم جایگشت‌های a تا z را از بیشترین به کمترین ارزش مرتب کنیم (اگر دو جایگشت ارزش برابر داشتند، جایگشتی که از نظر ترتیب الفبایی کوچک‌تر باشد، دارای اولویت بالاتر است).

ارزش یک جایگشت به شکل زیر تعریف می‌شود: value(π)=c=az(cntccntπc)2 value(\pi) = \sum_{c='a'}^{'z'} \left( cnt_c - cnt_{\pi_c} \right) ^ 2

منظور از cntccnt_c، تعداد تکرار حرف cc در رشته‌ است.

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

ورودی🔗

در خط اول، عدد صحیح kk می‌آید.

1k100 1 \leq k \leq 100

سپس در خط بعد ورودی یک آرایه cntcnt از اعداد صحیح به طول 2626 داده می‌شود که نشان‌دهنده تعداد تکرارهای هر حرف از الفبا است.

0cnti106 0 \leq cnt_i \leq 10^6

تضمین می‌شود که cntcntها اعداد متمایز باشند.

خروجی🔗

در kk خط خروجی، در هر خط یک جایگشت از حروف a تا z با فاصله از هم خروجی دهید که خط iiام نشان ‌دهنده جایگشت‌ iiام است.

مثال‌ها🔗

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

3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Plain text

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

z y x w v u t s r q p o n m l k j i h g f e d c b a 
y z x w v u t s r q p o n m l k j i h g f e d c b a 
z x y w v u t s r q p o n m l k j i h g f e d c b a 
Plain text

مسکن در دیوار


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

در این سوال، شما سیستمی برای مدیریت آگهی‌های مسکن طراحی می‌کنید. هر آگهی می‌تواند برای فروش، رهن یا اجاره باشد و دارای ویژگی‌هایی از جمله عنوان، قیمت، متراژ، نوع ملک (آپارتمان یا حیاط)، وضعیت (فروش، رهن یا اجاره)، و مختصات جغرافیایی (عرض و طول جغرافیایی) خواهد بود. شما باید این ویژگی‌ها را در کوئری‌های مختلف مانند افزودن آگهی، جستجو و حذف آگهی‌ها مدیریت کنید.

دستورها🔗

دستور add_house

فرم کلی این دستور به صورت زیر است:

add_house -name="<title>" -type="<type>" -status="<status>" -price=<price> -area=<area> -latitude=<latitude> -longitude=<longitude> [-desc="<description>"]
Plain text
  • <title> عنوان آگهی (منحصربه‌فرد و اجباری).
  • <type> نوع ملک (مانند apartment برای آپارتمان یا yard برای حیاط و اجباری).
  • <status> وضعیت ملک (sale برای فروش، rent برای رهن یا اجاره و اجباری).
  • <price> قیمت ملک (عدد صحیح و مثبت به تومان و اجباری).
  • <area> متراژ ملک (عدد صحیح و مثبت بر حسب متر مربع و اجباری).
  • <latitude> عرض جغرافیایی ملک (عدد حقیقی و اجباری).
  • <longitude> طول جغرافیایی ملک (عدد حقیقی و اجباری).
  • [description] توضیحات اختیاری.

اگر عنوان آگهی قبلاً ثبت شده باشد، پیام invalid title چاپ شود. در غیر این صورت، پیام house added successfully چاپ شود.

دستور get_houses

فرم کلی این دستور به صورت زیر است:

get_houses -type="<type>" -status="<status>" [-min_price=<min_price>] [-max_price=<max_price>] [-min_area=<min_area>] [-max_area=<max_area>] -latitude=<latitude> -longitude=<longitude>
Plain text

این دستور به معنی جستجو برای آگهی‌هایی با ویژگی‌های مشخص است.

  • <type> نوع ملک (مانند apartment یا yard و اجباری).
  • <status> وضعیت ملک (sale یا rent و اجباری).
  • [min_price] حداقل قیمت آگهی (عدد صحیح و اختیاری).
  • [max_price] حداکثر قیمت آگهی (عدد صحیح و اختیاری).
  • [min_area] حداقل متراژ آگهی (عدد صحیح وختیاری).
  • [max_area] حداکثر متراژ آگهی (عدد صحیح و اختیاری).
  • <latitude> عرض جغرافیایی منطقه جستجو (عدد حقیقی و اجباری).
  • <longitude> طول جغرافیایی منطقه جستجو (عدد حقیقی و اجباری).

در این دستور، آگهی‌ها باید بر اساس نزدیکی جغرافیایی به منطقه جستجو مرتب شوند. آگهی‌هایی که نزدیک‌تر به مختصات جستجو هستند، اول نمایش داده شوند. برای محاسبه نزدیکی از فرمول فاصله هاروارد (HaversineFormulaHaversine Formula) استفاده کنید. سپس نام آگهی‌های مرتب‌شده را به ترتیب در یک خط و با یک فاصله بین آن‌ها چاپ کنید. (نزدیک‌ترین آگهی باید در ابتدای خط چاپ شود.) اگر لیستی که باید چاپ شود خالی است، عبارت no house found! را چاپ کنید.

دستور remove_house

فرم کلی این دستور به صورت زیر است:

remove_house -name="<title>"
Plain text

این دستور به معنی حذف آگهی با عنوان <title> است.

  • اگر آگهی با این عنوان موجود نباشد، پیام invalid title چاپ شود.
  • در غیر این صورت، پیام house removed successfully چاپ شود.

نکات🔗

  1. تمام ورودی‌ها حروف کوچک انگلیسی و اعداد هستند و حداکثر طول هر رشته ۲۰ است.
  2. قیمت و متراژ همگی مقادیر صحیح و مثبت هستند.
  3. مختصات جغرافیایی (عرض و طول) مقادیر حقیقی و دقیق هستند و تا ۴ رقم اعشار در ورودی داده می‌شوند.
  4. مقایسه فاصله‌ها باید تا حداقل ۴ رقم اعشار دقیق باشند و داوری کد بر اساس ۴ رقم اول اعداد انجام می‌شود.
  5. تضمین می‌شود فرمت دستورهای ورودی، مطابق با صورت مسئله و معتبر هستند.
  6. به حروف کوچک و بزرگ در عبارات خروجی‌ دقت کنید. برای گرفتن امتیاز کامل، خروجی شما باید کاملا شبیه عبارات در صورت مسئله باشند.

ورودی🔗

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

1n1001 \leq n \leq 100

در nn سطر بعدی، هر سطر شامل یک دستور از نوع‌های تعریف‌شده است.

خروجی🔗

خروجی شامل nn سطر است که پاسخ مناسب به هر دستور را چاپ می‌کند.

مثال‌ها🔗

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

7
add_house -name="apartment1" -type="apartment" -status="sale" -price=3000000 -area=80 -latitude=35.6895 -longitude=51.3890
add_house -name="yard1" -type="yard" -status="rent" -price=5000000 -area=200 -latitude=35.6995 -longitude=51.3900
add_house -name="yard2" -type="yard" -status="rent" -price=5000000 -area=200 -latitude=35.6995 -longitude=51.3900
add_house -name="apartment2" -type="apartment" -status="sale" -price=4000000 -area=100 -latitude=35.6985 -longitude=51.3850
get_houses -type="apartment" -status="sale" -latitude=35.6890 -longitude=51.3880
remove_house -name="yard1"
get_houses -type="yard" -status="rent" -latitude=35.6890 -longitude=51.3890
Plain text

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

house added successfully
house added successfully
house added successfully
house added successfully
apartment1 apartment2 
house removed successfully
yard2
Plain text

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

5
add_house -name="apartment1" -type="apartment" -status="sale" -price=3500000 -area=90 -latitude=35.7100 -longitude=51.3800
add_house -name="apartment2" -type="apartment" -status="sale" -price=3800000 -area=110 -latitude=35.7200 -longitude=51.3700
get_houses -type="apartment" -status="sale" -latitude=35.7100 -longitude=51.3800
get_houses -type="apartment" -status="sale" -latitude=35.7100 -longitude=51.3800 -min_price=3600000
remove_house -name="apartment2"
Plain text

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

house added successfully
house added successfully
apartment1 apartment2 
apartment2
house removed successfully
Plain text