کولر یا بخاری


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

توضیح تصویر

تپسی معتقد است که هر ماشین، باید در هر لحظه، «بخاری» یا «کولر»ش روشن باشد تا مسافرین راضی باشند.

به همین دلیل، دمای هوای nn روز متوالی، توسط کارشناسان این شرکت محاسبه شده است و آن را به صورت یک دنباله مانند t1,t2,,tnt_1, t_2, \dots, t_n \, دارد. (عدد tit_i دمای هوا در روز iiام است.)

همچنین تپسی معتقد است اگر دمای هوا:

  • بیشتر از ۱۵ درجه باشد باید «کولر» روشن کنیم.
  • در غیر این صورت باید «بخاری» روشن کنیم.

حال از شما می‌خواهیم نام وسیله‌ای (کولر یا بخاری) که باید در هر روز روشن کنیم را مشخص کنید.

ورودی🔗

در سطر اول ورودی، عدد صحیح و مثبت nn آمده، که نشان‌دهنده‌ی تعداد روزهایی است که دمای آن‌ها به ما داده شده است. 1n1001 \leq n \leq 100

در سطر دوم ورودی، nn عدد صحیح (نه لزوماً مثبت) که با یک فاصله از هم جدا شده‌اند، آمده است، که عدد iiام آن، دمای هوای روز iiام یا همان tit_i را نشان می‌دهد.

100ti100-100 \leq t_i \leq 100

خروجی🔗

خروجی nn سطر دارد، در سطر iiام ورودی، در صورتی که لازم است در روز iiام لازم است:

  • بخاری روشن کنیم،‌ رشته heater را چاپ کنید.
  • کولر روشن کنیم، رشته cooler را چاپ کنید.

توجه کنید سیستم داوری به بزرگ و کوچک بودن حروف حساس است.

مثال🔗

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

4
47 -11 26 15
Plain text

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

cooler
heater
cooler
heater
Plain text
  • در روز اول دمای هوا ۴۷ درجه است و این دما بیشتر از ۱۵ درجه است. پس باید کولر روشن کنیم.
  • در روز دوم دمای هوا ۱۱- درجه است و این دما کمتر یا مساوی ۱۵ درجه است. پس باید بخاری روشن کنیم.
  • در روز سوم دمای هوا ۲۶ درجه است و این دما بیشتر از ۱۵ درجه است. پس باید کولر روشن کنیم.
  • در روز چهارم دمای هوا ۱۵ درجه است و این دما کمتر یا مساوی ۱۵ درجه است. پس باید بخاری روشن کنیم.

یک‌میلیون دلار


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

توضیح تصویر

الکس تاو (Alex Tew) یک ایده بسیار جالب دارد و می‌توانید ماجرای اصلی آن را اینجا بخوانید. اما داستان تحریف شده آن را در ادامه آورده‌ایم.

او در صفحه اول یک وب‌سایت یک بنر n×mn \times m پیکسل قرار داده است. او قیمت هر پیکسل را یک دلار قرار داده است.

اما او یک قانون دارد، آن هم این که هر کس می‌تواند یک بلوک a×ba \times b از این صفحه را بخرد که قبلا هیچ پیکسلی از آن به فروش نرسیده باشد.

حال امین می‌خواهد تعدادی از پیکسل‌ها را بخرد به طوری که:

  • هیچ کس نتواند هیچ پیکسل دیگری بخرد.
  • کمترین هزینه را صرف این کار کند.

ورودی🔗

در سطر اول ورودی، عدد صحیح TT آمده، که تعداد تست‌کیس‌ها را نشان‌می‌دهد. 1T1001 \leq T \leq 100

در TT سطر بعدی، در هر سطر چهار عدد صحیح nn، mm، aa و bb آمده که به ترتیب تعداد سطر و ستون‌های سایت و ابعاد بلوک‌های مجاز برای خریدن است.

1an1000,1bm10001 \leq a \leq n \leq 1000, \quad \quad 1 \leq b \leq m \leq 1000

خروجی🔗

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

مثال🔗

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

3
5 7 1 1
10 10 2 3
5 7 2 1
Plain text

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

35
6
14
Plain text

تست اول.

اگر صفحه اصلی 5×75\times7 باشد و امکان خرید بلوک‌های 1×11\times1 باشد، باید همه 3535 خانه را بخرد تا کسی نتواند هیچ بلوک دیگری را بخرد.

توضیح تصویر

تست دوم.

اگر صفحه اصلی 10×1010\times10 باشد و امکان خرید بلوک‌های 2×32\times 3 باشد‌، می‌تواند با خریدن 66 بلوک مانند تصویر پایین‌، کاری کند که هیچ‌کس نتواند بلوک دیگری بخرد. همچنین می‌توان نشان‌داد حداقل 66 بلوک لازم است.

توضیح تصویر

تست سوم.

اگر صفحه اصلی 5×75\times7 باشد و امکان خرید بلوک‌های 2×12\times 1 باشد‌، می‌تواند با خریدن 1414 بلوک مانند تصویر پایین‌، کاری کند که هیچ‌کس نتواند بلوک دیگری بخرد. همچنین می‌توان نشان‌داد حداقل 1414 بلوک لازم است.

توضیح تصویر

رازداری در مدرسه


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

توضیح تصویر

در یک مدرسه nn دوست دور هم جمع شده‌اند. این دوست‌ها را می‌توانیم با اعداد 11 تا nn شماره‌گذاری کنیم.

تعدادی رابطه «دهن‌لقی» بین این دوستان وجود دارد؛ یعنی اگر این رابطه از uu به vv وجود داشته باشد. اگر uu رازی از کسی را بداند در یک شب با vv در یک کافه قرار می‌گذارد و آن راز را به vv می‌گوید. توجه کنید رابطه‌ی «دهن‌لقی» لزوماً دو طرفه نیست.

حال در یک روز، ss یک راز برای tt از زندگی شخصی‌اش می‌گوید. همچنین می‌دانیم که tt رابطه دهن‌لقی با ss ندارد.

توجه کنید انتقال یک راز از یک‌نفر به یک نفر دیگر یک روز طول می‌کشد. چون یک روز در قراری باید آن را بشنود و در یک روز دیگر این راز را منتقل کند.

قرارها نیز دو نفره هستند و به صورت گروهی برگزار نمی‌شود.

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

ورودی🔗

ورودی شامل TT تست نمونه است. 1T1000001 \leq T \leq 100 \, 000

برای هر تست، در سطر اول ورودی چهار عدد صحیح و مثبت nn، mm، ss و tt آمده است که به ترتیب نشان‌دهنده‌ی تعداد دانش‌آموزان، تعداد رابطه‌های دهن‌لقی و شخص ss و tt است.

2n1000002 \leq n \leq 100 \, 000 0mmin{n(n1),100000}0 \leq m \leq \min\{n(n - 1), 100 \, 000\} 1stn1 \leq s \neq t \leq n

تضمین می‌شود tt رابطه دهن‌لقی با ss ندارد. در mm خط بعدی دو عدد صحیح uu و vv که با یک فاصله از هم جدا شده‌اند آمده است و نشان‌دهنده‌ی وجود رابطه دهن‌لقی از uu به vv است.

1uvn1 \leq u \neq v \leq n

تضمین می‌شود هر رابطه حداکثر یکبار ورودی داده شود همچنین n+m\sum n + m به‌ازای همه TT تست از ۱۰۰‌،۰۰۰ بیشتر نمی‌شود.

خروجی🔗

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

اگر هیچ‌وقت چنین اتفاقی نمی‌افتد -1 چاپ کنید.

مثال🔗

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

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

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

2
-1
Plain text

تست اول.

  • در روز اول ۱ رازش را به ۲ می‌گوید.
  • در روز دوم ۲ راز ۱ را به ۳ می‌گوید.
  • در روز سوم ۳ راز ۱ را به ۱ می‌گوید.

پس در روز سوم (بعد از گذشت ۲ روز)، شخص ۱ متوجه فاش شدن رازش می‌شود. بنابراین پاسخ این تست برابر ۲ است.

توضیح تصویر

تست دوم.

  • در روز اول ۲ رازش را به ۳ می‌گوید.
  • در روز دوم ۳ راز ۲ را به ۴ می‌گوید.
  • در روز سوم ۴ راز ۲ را به ۱ می‌گوید.

در روز چهارم همه راز ۲ را می‌دانند اما هیچ‌وقت ۲ متوجه نمی‌شود که رازش فاش شده است. بنابراین پاسخ مسئله ۱- خواهد بود.

توضیح تصویر

قائم‌شماری


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

توضیح تصویر

علی یک مثلث قائم الزاویه دارد. امین می‌خواهد مثلث علی را شناسایی کند. او می‌داند که طول اضلاع مثلث علی طبیعی است. همچنین می‌داند اندازه وتر این مثلث nn است. او می‌خواهد تعداد حالت‌های ممکن برای مثلث علی را محاسبه کند. به او کمک کنید تا این کار را انجام دهد.

ورودی🔗

در سطر اول ورودی، عدد صحیح و مثبت TT آمده که نشان دهنده‌ی تعداد تست‌کیس‌ها است. 1T1001 \leq T \leq 100

در TT سطر بعدی، در هر سطر، یک عدد صحیح و مثبت nn آمده است. 1n1091 \le n \le 10^9

زیر مسئله‌ها🔗

زیرمسئله نمره محدودیت
۱ ۱۰ n100n \leq 100
۲ ۳۰ n10000n \le 10000
۳ ۶۰ بدون محدودیت اضافی

خروجی🔗

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

مثال🔗

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

3
3
5
13
Plain text

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

0
1
1
Plain text

تست اول.

هیچ مثلث قائم الزاویه‌ای با که اضلاع آن طبیعی باشند و طول وتر آن ۳ باشد وجود ندارد.

تست دوم.

تنها یک مثلث قائم الزاویه با اضلاع طبیعی وجود دارد و طول وتر آن برابر ۵ باشد. و آن‌هم مثلثی با طول اضلاع ۳‌، ۴ و ۵ است.

توضیح تصویر

تست سوم.

تنها یک مثلث قائم الزاویه با اضلاع طبیعی وجود دارد و طول وتر آن برابر ۱۳ باشد. و آن‌هم مثلثی با طول اضلاع ۵، ۱۲ و ۱۳ است.

توضیح تصویر

تأسیس استارت‌آپ


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

توضیح تصویر

امین nn دوست دارد. او دوست‌هایش را با اعداد 11 تا nn شماره‌گذاری کرده است. هر کدام از دوست‌های امین از سه نظر «مهارت در فرانت‌اند» که با fif_i، «مهارت در بک‌اند» که با bib_i و «پول نقد در حساب» که با mim_i نشان‌می‌دهیم، برای دعوت در یک مهمانی کاندید شده‌اند.

دوست iiام امین نسبت به دوست jjام امین «احساس حقارت» می‌کند. اگر در هر دو زمینه فرانت‌اند و بک‌اند مهارت کمتری داشته باشد. به عبارت دیگر fi<fjf_i < f_j و bi<bjb_i < b_j باشد، دوست iiام امین نسبت به دوست jjام «احساس حقارت» می‌کند. (توجه کنید میزان پول نقد در حساب اهمیتی ندارد!)

حال امین می‌خواهد تعدادی از دوستان خود را انتخاب کند، تا با هم استارت‌آپ بزنند. امین می‌خواهد طوری این جمع را انتخاب کند که:

  • هیچ دو نفری نسبت به هم احساس حقارت نکنند.
  • مجموع پول نقد در حساب این افراد بیشینه باشد.

به امین کمک کنید تا بیشترین مجموع پول‌ نقدی که می‌تواند با کمک دوستانش برای تاسیس استارتاپ جمع کند را حساب کند.

ورودی🔗

در سطر اول ورودی، عدد صحیح و مثبت nn آمده است که تعداد دوستان امین را نشان می‌دهد. 1n1000001 \leq n \leq 100 \, 000 در nn سطر بعدی در هر سطر سه عدد صحیح fif_i، bib_i و mim_i که با یک فاصله از هم جدا شده‌اند و به ترتیب نشان‌دهنده مهارت در فرانت، مهارت در بک‌اند و پول نقد در حساب افراد را نشان می‌دهد.

1fi,bi,mi1091 \leq f_i, b_i, m_i \leq 10^9

خروجی🔗

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

مثال🔗

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

3
1 1 100
2 3 50
3 2 50
Plain text

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

100
Plain text

امین می‌تواند دوست ۱ خود را برای تاسیس استارت‌آپ انتخاب کند. بنابراین می‌تواند ۱۰۰ تومان پول نقد داشته باشد.

توجه کنید دوست ۱ با هیچ دوست دیگری نمی‌تواند انتخاب شود، چون نسبت به آن‌ها احساس حقارت می‌کند. همچنین مجموع پول نقد ۲ و ۳ حداکثر ۱۰۰ تومان است. پس تاسیس این استارت‌آپ با پول بیشتری ممکن نیست.

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

4
1 1 100
2 3 50
3 2 50
3 3 50
Plain text

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

150
Plain text

امین می‌تواند دوست ۲، ۳ و ۴ خود را برای تاسیس استارت‌آپ انتخاب کند. بنابراین می‌تواند ۱۵۰ تومان پول نقد داشته باشد.

توجه کنید ۱ و ۲ نسبت به ۳ احساس حقارت نمی‌کنند، چون باید در هر دو مبحث فرانت‌اند و بک‌اند مهارت کمتری داشته‌باشند ولی در یکی از این‌ویژگی‌ها برابر هستند.

همچنین با بررسی کردن حالت‌های مختلف می‌توان نشان داد که این عدد بیشینه است.

گمگشته


کد شما باید روی آخرین نسخه‌ی MySQL قابل اجرا باشد.


بیدل

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

شما باید با نوشتن چند کوئری، مشکل او را حل کنید.

جزئیات پروژه🔗

داده‌های اولیه برای تست نمونه را از این لینک کنید.

ساختار جداول به‌شرح زیر است:

  1. جدول places: از این جدول برای نگهداری تمام اطلاعات مربوط به مکان‌ها استفاده می‌شود.
نام ستون نوع تعریف
id BIGINT آی‌دی
address VARCHAR(255) آدرس مکان
  1. جدول geometries: این جدول وظیفه نگهداری نقاط جغرافیایی این مکان‌ها را بر عهده دارد.
نام ستون نوع تعریف
id BIGINT آی‌دی
place_id BIGINT آی‌دی مکان
point POINT(x, y) نقطه مورد مورد نظر برروی نقشه (با واحد متر)

هر نقطه مربوط به یک محل است.

مطلوبات🔗

کوئری‌های زیر را طوری بنویسید که خروجی خواسته‌شده به‌دست آید:

  1. آدرس و فاصله‌ی مکان‌هایی با فاصله‌ی کم‌تر از ۸ کیلومتر تا نقطه‌ی (5728895.9321717, 4255004.0324245) به‌ترتیب صعودی فاصله در قالب ستون‌هایی با نام address و distance
  2. آدرس و فاصله تمام مکان‌هایی که تا مکانی با آدرس فرودگاه کم‌تر از ۲۰ کیلومتر فاصله دارند، به‌ترتیب صعودی فاصله در قالب ستون‌هایی با نام address و distance
    • تضمین می‌شود که دقیقاً یک فرودگاه در داده‌های سیستم داوری وجود دارد.
  3. در بین داده‌ها، نقاطی وجود دارند که در آدرس آن‌ها واژه‌ی مترو وجود دارد. فاصله‌ی همه‌ی این نقاط را با یکدیگر برحسب متر به‌ترتیب صعودی فاصله به‌دست آورید. ستون‌های خروجی باید به‌صورت زیر باشند:
address1 address2 distance

اگر فاصله‌ی دو نقطه با یکدیگر برابر بود، آن‌ها را ابتدا براساس مقدار address1 و سپس براساس مقدار address2 مرتب کنید.

آن‌چه باید آپلود کنید🔗

پس از طراحی کوئری‌ها، آن‌ها را در قالب زیر در یک فایل با پسوند .sql آپلود کنید.

-- Section1
   Your first query here
-- Section2
   Your second query here
-- Section3
   Your third query here
Plain text

بررسی فضا


توضیح تصویر

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

او که چیزی از ترمینال لینوکس و اسکریپت‌نویسی نمی‌داند از شما کمک خواسته تا برای او دو کار زیر را انجام دهید:

  • میزان فضای آزاد و میزان کل حافظه خود را در خط اول خروجی اسکریپت مشاهده کند. او می‌خواهد خروجی به فرمت زیر باشد:
extensionFromNamebash
Free/Total memory: 224G / 251G
Terminal
  • درصد فضای اشغال شده دیسک را در خط دوم خروجی اسکریپت مشاهده کند. دقت کنید که چون سلیب از علامت درصد (%) متنفر است، نیاز دارد تا تنها عدد درصد فضای اشغالی را ببیند. خروجی باید به فرمت زیر باشد:
extensionFromNamebash
Percentage: 7
Terminal

مثال🔗

برای مثال اگر اسکریپت شما را مانند زیر اجرا کنیم:

extensionFromNamebash
./disk-analyzer.sh
Terminal

باید خروجی زیر را دهد:

extensionFromNamebash
Free/Total memory: 224G / 251G
Percentage: 7
Terminal

پروژه اولیه🔗

برای دریافت پروژه اولیه این لینک را دانلود کنید. درون لینک ساختار فایلی زیر را مشاهده می‌کنید:

Disk-Analyzer
└── disk-analyzer.sh
Plain text

راه‌حل خود را درون فایل disk-analyzer.sh پیاده‌سازی کنید.

توجه کنید🔗

  • اسکریپت شما باید فقط دو خط خروجی داشته باشد.
  • به تمامی فاصله‌های خالی بین حروف خروجی دقت کنید.
  • از دستور df -h / برای مشاهده وضعیت فایل سیستم خواسته شده استفاده کنید.
  • در داوری این سوال اطلاعات فایل سیستمی را که روی/ mount شده را می‌خواهیم.
  • دسترسی اجرا به فایل ارسالی شما به طور خودکار در سیستم داوری داده می‌شود.

نمونه خروجی دستور df -h / در سیستم داوری به صورت زیر است:

Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/docker-8:XXX   6.0G  1.2G  4.9G  20% /
Plain text

نحوه ارسال🔗

برای ارسال جواب دستورات خواسته شده را درون فایلی با نام disk-analyzer.sh وارد کنید و آن را انتخاب و سپس ارسال کنید.