| اگر تا حالا توی کوئرا سوالی حل نکردی این ویدیو رو ببین! |
|:---:|
| %video.arvan_https://player.arvancloud.ir/index.html?config=https://qvideo.arvanvod.ir/Z7LYW3YQBA/7xQM9V4Vk9/origin_config.json% |
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
در این سوال به شما دو عدد صحیح مثل $a$ و $b$ داده میشود. از شما میخواهیم برنامهای بنویسید که مقدار $a$ و $b$ را دریافت کند و $a + b$ را چاپ کند.
# ورودی
در تنها سطر ورودی، دو عدد صحیح $a$ و $b$ که با یک فاصله از هم جدا شدهاند، داده میشود.
$$1 \leq a, b \leq 100$$
# خروجی
در تنها سطر خروجی، مقدار $a + b$ را چاپ کنید.
# مثالها
## ورودی نمونه ۱
```
3 5
```
## خروجی نمونه ۱
```
8
```
## ورودی نمونه ۲
```
1 1
```
## خروجی نمونه ۲
```
2
```
<details class="red">
<summary>
# **اشتباهات متداول**
</summary>
<details class="red">
<summary>
**چک کردن شرایط ورودی مسئله**
</summary>
نیازی نیست چک کنید شرایط گفته شده در ورودی برقرار است یا نه. توضیحات محدودیتها فقط برای آگاهی شما دربارهی تستها و محدودیتهای مسئله است و قطعاً در ورودیهای داده شده به برنامهی شما رعایت میشوند. پس نیازی نیست بنویسید:
```python
if 1 <= n <= 100:
# answer of problem
else:
# print('invalid input')
```
</details>
<details class="red">
<summary>
**ابتدا همهی ورودی را گرفتن و در نهایت همهی خروجی را چاپ کردن**
</summary>
شما میتوانید لابهلای دریافت ورودی، خروجی دهید. پس نیازی نیست ابتدا همهی ورودیها را دریافت کنید و در نهایت همهی خروجیها را چاپ کنید. مخصوصاً برای سوالاتی که باید به چندین سوال پاسخ دهید، میتوانید دو قسمت ورودی و خروجی را کاملاً مستقل در نظر بگیرید و مطمئن باشید تداخلی پیش نمیآید.
</details>
<details class="red">
<summary>
**چاپ کردن موارد اضافه برای دریافت ورودی**
</summary>
لطفاً از چاپ کردن موارد اضافه مثل `please enter a number` برای دریافت ورودی پرهیز کنید. برای مثال در زبان پایتون نباید بنویسید:
```python
input('please enter:')
```
</details>
<details class="red">
<summary>
**چند فایلی کد زدن**
</summary>
برای زبانهایی مثل جاوا نباید در بالای کد شما آدرس پکیج داده شود. برای مثال در بالای کد خود نباید بنویسید:
```java
package ir.quera.contest;
```
</details>
<details class="red">
<summary>
**استفاده از چند `Scanner` برای دریافت ورودی**
</summary>
در زبان جاوا، باید فقط یک شئ از جنس `Scanner` تعریف کنید و همهی ورودیها را با آن دریافت کنید.
</details>
<details class="red">
<summary>
**نحوهی دریافت ورودی و چاپ کردن خروجی**
</summary>
برای آشنایی بیشتر برای نحوهی دریافت ورودی و چاپ کردن خروجی این [لینک](https://quera.org/course/assignments/2693/problems/8774) را مطالعه کنید.
</details>
جمع دو عدد (آموزشی)
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
هر کدام از دوستداران کداستار، یک شماره تلفن به بوتکمپ هدیه دادهاند. میخواهیم همه این شماره تلفنها را ذخیره کنیم ولی مشکل این است که هر کدام از شماره تلفنها به طور متفاوتی نوشته شدهاند و ما باید همه آنها را به شکل یکسان ذخیره کنیم.
هر کدام از شماره تلفنهای هدیه داده شده در یکی از دستههای زیر قرار میگیرند:
+ دسته اول که با `09` شروع شدهاند.
+ دسته دوم که با `98` شروع شدهاند.
+ دسته سوم که با `+98` شروع شدهاند.
+ آن دسته از شمارهها که نامعتبر هستند.
از شما میخواهیم تمام شماره تلفنهایی که هدیه داده شدهاند و شمارههای معتبری هستند را به شکل دسته سوم بنویسید تا بتوانیم به راحتی آنها را ذخیره کنیم. یک شماره در صورتی معتبر است که در یکی از دستههای اول تا سوم قرار گیرد و همچنین ۱۱ رقم داشته باشد.
# ورودی
در خط اول ورودی، عدد طبیعی $n$ میآید. سپس در هر یک از $n$ خط بعدی، یک رشته $s$ نشاندهنده شماره تلفن هدیه داده شده میآید.
$$ 1 \leq n \leq 100 $$
تضمین میشود که هر رشته فقط از ارقام و کاراکتر `+` تشکیل میشود.
# خروجی
خروجی شما باید شامل $n$ خط باشد. در هر خط، در صورتی که شماره تلفن مربوطه یک شماره معتبر است، آن را با فرمت دسته سوم و در غیر اینصورت `invalid` چاپ کنید.
# مثالها
## ورودی نمونه ۱
```
5
09123456789
0912345678+9
+989123456789
091234567891
989123456789
````
## خروجی نمونه ۱
```
+989123456789
invalid
+989123456789
invalid
+989123456789
````
+ شمارهی `09123456789` معتبر است و در دستهی اول است و صرفاً باید به دستهی سوم یعنی `+989123456789` تغییر کند.
+ شمارهی `0912345678+9` کاراکتر `+` را در جای ارقام دارد که یعنی معتبر نیست.
+ شمارهی `+989123456789` در همان دستهی سوم به درستی نوشته شده است.
+ شمارهی `091234567891` یک رقم بیشتر دارد و معتبر نیست.
+ شمارهی `989123456789` معتبر است و در دستهی دوم است و صرفاً باید به دستهی سوم یعنی `+989123456789` تغییر کند.
شماره تلفن
+ محدودیت زمان: ۲ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
یکی از سرورهای گوگولا در هر روز $n$ وظیفه برنامهریزی شده را انجام میدهد. وظیفه $i$ام در زمان $s_i$ انجام میشود. اجرای هر وظیفه به اندازه $k$ میلیثانیه زمان میبرد پس هر وظیفه از ابتدای ثانیه $s_i$ تا انتهای ثانیه $s_i + k - 1$ در حال انجام است. انجام نشدن وظیفه $i$ام هزینه $w_i$تایی برای شرکت گوگولا به ارمغان میآورد.
اداره برق برای $q$ روز بعدی جدول زمانبندی قطعی برق را اعلام کرده است. در روز $i$ام برق سرور از ابتدای ثانیه $l_i$ تا انتهای ثانیه $r_i$ در همان روز قطع میشود. هر وظیفهای که زمان اجرای آن با زمان قطعی برق تلاقی داشته باشد، متوقف میشود. هزینهای که گوگولا در روز $i$ام به خاطر قطعی برق میدهد، به اندازه مجموع هزینه وظایف متوقف شده میباشد. به ازای هر روز هزینه قطعی برق برای سرور گوگولا را محاسبه و چاپ کنید.
# ورودی
در خط اول عدد طبیعی $n$ میآید.
در خط دوم عدد طبیعی $k$ میآید.
در خط سوم اعداد طبیعی $s_1, s_2, \cdots, s_n\,$ بهترتیب میآیند.
در خط چهارم اعداد طبیعی $w_1, w_2, \cdots, w_n\,$ بهترتیب میآیند.
در خط پنجم عدد طبیعی $q$ میآید. در $i$امین خط از $q$ خط بعدی، دو عدد $l_i$ و $r_i$ بهترتیب میآیند.
$$1 \leq n, q \leq 200 \, 000 $$
$$1 \leq k, s_i, w_i \leq 10^{9}$$
$$1 \leq l_i \leq r_i \leq 10^{9}$$
# خروجی
در $q$ خط هزینه قطعی برق را به ازای هر روز بهترتیب چاپ کنید.
# مثالها
## ورودی نمونه ۱
```
4
2
5 6 1 3
400 800 100 200
5
1 2
1 4
2 2
3 6
5 10
```
## خروجی نمونه ۱
```
100
300
100
1400
1200
```
در این نمونه $k = 2$ است و یعنی کارها از
+ ابتدای ثانیهی پنجم تا انتهای ثانیهی ششم
+ ابتدای ثانیهی ششم تا انتهای ثانیهی هفتم
+ ابتدای ثانیهی یکم تا انتهای ثانیهی دوم
+ و از ابتدای ثانیهی سوم تا انتهای ثانیهی چهارم
انجام میشوند و هزینهی آنها به ترتیب $400$، $800$، $100$ و $200$ است.
در قطعیهای برق مختلف اگر:
+ برق از ابتدای ثانیهی اول تا انتهای ثانیهی دوم برود، کار سوم متوقف میشود و هزینهی $100$ دارد.
+ برق از ابتدای ثانیهی اول تا انتهای ثانیهی چهارم برود، کار سوم و چهارم متوقف میشوند و هزینهی $100 + 200$ دارد.
+ برق از ابتدای ثانیهی دوم تا انتهای ثانیهی دوم برود، کار سوم متوقف میشود و هزینهی $100$ دارد.
+ برق از ابتدای ثانیهی سوم تا انتهای ثانیهی ششم برود، کارهای به جز کار سوم متوقف میشوند و هزینهی $800 + 400 + 200$ دارد.
+ برق از ابتدای ثانیهی پنجم تا انتهای ثانیهی دهم برود، کارهای اول و دوم متوقف میشوند و هزینهی $400 + 800$ دارد.
قطعی برق
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
آرایهی $a_1, a_2, \dots, a_n\,$ از اعداد طبیعی وجود دارد. یک جایگشت
$p_1, p_2, \cdots, p_n$
*مناسب* است اگر
$p_i \leq a_i$
به ازای تمامی اندیسهای
$1 \leq i \leq n$
برقرار باشد.
جایگشت مناسبی را پیدا کنید که تعداد نابهجاییهای آن کمینه است. تعداد نابهجاییهای جایگشت
$p$
برابر با زوج اندیسهای $(i, j)$ است که
$1 \leq i < j \leq n$
است و
$p_i > p_j\,$
.
# ورودی
در خط اول ورودی عدد طبیعی $n$ میآید.
$$1 \leq n \leq 100 \, 000$$
در خط دوم اعداد طبیعی
$a_1, a_2, \cdots, a_n\,$
بهترتیب میآیند.
$$1 \leq a_i \leq 10^9$$
# خروجی
در تنها خط خروجی، جایگشت مناسبی که کمترین نابهجایی دارد را چاپ کنید. اگر چند جایگشت با این شرایط وجود داشت، یکی را به دلخواه چاپ کنید.
# مثالها
## ورودی نمونه ۱
```
5
5 5 5 2 2
````
## خروجی نمونه ۱
```
3 4 5 1 2
````
جایگشت ارائه شده *مناسب* است. چون
+ $p_1 = 3 \leq 5 = a_1$
+ $p_2 = 4 \leq 5 = a_2$
+ $p_3 = 5 \leq 5 = a_3$
+ $p_4 = 1 \leq 2 = a_4$
+ $p_5 = 2 \leq 2 = a_5$
و از بین تمام جایگشتهای مناسب، این جایگشت کمترین تعداد نابهجایی را دارد.
## ورودی نمونه ۲
```
1
964535797
````
## خروجی نمونه ۲
```
1
````
تنها جایگشت یک عضوی $1$ است که شرط مناسب بودن را هم دارد.
## ورودی نمونه ۳
```
5
1 4 5 3 3
````
## خروجی نمونه ۳
```
1 4 5 2 3
````
دو جایگشت $\langle 1, 4, 5, 2, 3 \rangle$ و $\langle 1, 4, 5, 3, 2 \rangle$ مناسب هستند که جایگشت اول نابهجایی کمتری دارد.
کمینه نابهجایی
در این سوال شما باید یک تقویم شبیه به [*Google Calendar*](https://calendar.google.com) طراحی و پیادهسازی کنید که فقط با استفاده از دستورات متنی (*command line*) با آن تعامل میشود. این تقویم قادر است رویدادهای روزانه را مدیریت کرده، برخوردهای (*conflicts*) رویدادها را تشخیص داده و امکان جستوجو، ویرایش و گزارشگیری از رویدادها را فراهم کند.
### **اهداف اصلی**
1. اضافه کردن، حذف و ویرایش رویدادها
2. نمایش برنامه روزانه/هفتگی/ماهانه
3. تشخیص برخورد زمانی بین رویدادها
4. جستوجوی رویدادها با کلمات کلیدی
### **فرمت دستورات ورودی**
ورودیها به شکل دستورات متنی داده میشوند. هر خط یک دستور مجزا است.
#### دستورات
```
<mark class="red">ADD</mark> --date <yyyy-mm-dd> --start <hh:mm> --end <hh:mm> --title <event_title>
<mark class="orange">REMOVE</mark> --date <yyyy-mm-dd> --start <hh:mm>
<mark class="yellow">EDIT</mark> --date <yyyy-mm-dd> --start <hh:mm> --title <new_title>
<mark class="olive">LIST</mark> --date <yyyy-mm-dd>
<mark class="green">WEEK</mark> --date <yyyy-mm-dd>
<mark class="teal">MONTH</mark> --month <yyyy-mm>
<mark class="blue">SEARCH</mark> --keyword <search_term>
<mark class="purple">CONFLICTS</mark> --date <yyyy-mm-dd>
```
#### **توضیح دستورات:**
+ `ADD`: افزودن یک رویداد با تاریخ، ساعت شروع، ساعت پایان و عنوان.
+ `REMOVE`: حذف رویدادی که از ساعت مشخص در یک روز آغاز میشود.
+ `EDIT`: تغییر عنوان رویداد مشخص شده.
+ `LIST`: فهرست رویدادهای یک روز خاص به ترتیب زمان.
+ `WEEK`: فهرست رویدادهای ۷ روز از تاریخ دادهشده.
+ `MONTH`: فهرست رویدادهای یک ماه خاص.
+ `SEARCH`: جستوجوی رویدادهایی که عنوانشان شامل کلیدواژه است.
+ `CONFLICTS`: نمایش تمام رویدادهایی که در تاریخ مشخص با یکدیگر همپوشانی دارند.
## راهنمای دستورات
<details class="red">
<summary>
**افزودن رویداد**
</summary>
```
ADD --date <date> --start <start_time> --end <end_time> --title <title>
```
این دستور یک رویداد جدید را با مشخصات زیر به تقویم اضافه میکند:
+ `<date>`: تاریخ رویداد به فرمت `yyyy-mm-dd`
+ `<start_time>`: زمان شروع رویداد به فرمت `hh:mm` (۲۴ ساعته)
+ `<end_time>`: زمان پایان رویداد به فرمت `hh:mm` (۲۴ ساعته)
+ `<title>`: عنوان رویداد (حداکثر ۱۰۰ کاراکتر)
**قوانین و شرایط:**
+ زمان پایان باید **لزوماً بعد از** زمان شروع باشد. در غیر این صورت پیام خطای زیر چاپ شود:
```
ERROR: end time should be after the start time
```
+ در صورت موفقیت، پیام زیر در کنسول چاپ شود:
```
Created event at <date> <start_time>
```
</details>
<details class="orange">
<summary>
**حذف رویداد**
</summary>
```
REMOVE --date <date> --start <start_time>
```
این دستور رویدادی را که دقیقاً در تاریخ و ساعت مشخصشده **شروع میشود**، از تقویم حذف میکند.
+ `<date>`: تاریخ رویداد به فرمت `yyyy-mm-dd`
+ `<start_time>`: زمان شروع رویداد به فرمت `hh:mm`
**قوانین و شرایط:**
+ فقط اگر رویدادی دقیقا با این تاریخ و ساعت شروع وجود داشته باشد، حذف انجام میشود.
+ در صورت موفقیت:
```
Removed event at <date> <start_time>
```
+ در صورت عدم وجود رویداد:
```
ERROR: no event found at <date> <start_time>
```
</details>
<details class="yellow">
<summary>
**ویرایش عنوان رویداد**
</summary>
```
EDIT --date <date> --start <start_time> --title <new_title>
```
این دستور عنوان رویدادی را که در تاریخ و ساعت مشخصشده شروع میشود، به مقدار جدید تغییر میدهد.
+ `<date>`: تاریخ رویداد به فرمت `yyyy-mm-dd`
+ `<start_time>`: زمان شروع رویداد به فرمت `hh:mm`
+ `<new_title>`: عنوان جدید (حداکثر ۱۰۰ کاراکتر)
**قوانین و شرایط:**
+ فقط عنوان قابل تغییر است، زمان شروع یا پایان قابل تغییر نیست.
+ اگر رویداد یافت شود، ویرایش انجام میشود و خروجی زیر چاپ میشود:
```
Edited event at <date> <start_time>
```
+ در صورت عدم وجود رویداد:
```
ERROR: no event found at <date> <start_time>
```
</details>
<details class="olive">
<summary>
**نمایش برنامه روزانه**
</summary>
```
LIST --date <date>
```
این دستور فهرست تمام رویدادهای ثبتشده در یک روز خاص را به ترتیب زمان شروع (رویدادهایی که زمان شروع زودتری دارند، بالاتر چاپ شوند)، نمایش میدهد.
+ `<date>`: تاریخ مورد نظر به فرمت `yyyy-mm-dd`
**فرمت خروجی:**
```
Day View: <date>
| <date> | <start_time>-<end_time> | <title> |
```
+ اگر هیچ رویدادی در آن روز وجود نداشته باشد:
```
Day View: <date>
No events found.
```
</details>
<details class="green">
<summary>
**نمایش برنامه هفتگی**
</summary>
```
WEEK --date <date>
```
این دستور فهرست تمام رویدادهای ۷ روز از تاریخ مشخصشده (شامل آن روز) را نمایش میدهد. مثلا اگر تاریخ ۷ نوامبر وارد شود، رویدادهای ۷ نوامبر تا ۱۳ نوامبر نمایش داده شوند.
+ `<date>`: تاریخ شروع بازه به فرمت `yyyy-mm-dd`
**فرمت خروجی:**
```
Week View (<start_date> to <end_date>):
| <date> | <start_time>-<end_time> | <title> |
```
+ اگر هیچ رویدادی در بازه وجود نداشته باشد:
```
Week View (<start_date> to <end_date>):
No events found.
```
</details>
<details class="teal">
<summary>
**نمایش برنامه ماهانه**
</summary>
```
MONTH --month <year-month>
```
این دستور فهرست تمام رویدادهای ثبتشده در یک ماه مشخص را به ترتیب تاریخ و زمان نمایش میدهد.
+ `<year-month>`: ماه مورد نظر به فرمت `yyyy-mm`
**فرمت خروجی:**
```
Month View: <year-month>
| <date> | <start_time>-<end_time> | <title> |
```
+ اگر هیچ رویدادی در آن ماه وجود نداشته باشد:
```
Month View: <year-month>
No events found.
```
</details>
<details class="blue">
<summary>
**جستوجوی رویداد**
</summary>
```
SEARCH --keyword <keyword>
```
این دستور رویدادهایی را نمایش میدهد که عنوان آنها شامل کلیدواژه دادهشده است و حساس به بزرگی و کوچکی حروف **نیست**. خروجی ابتدا به ترتیب تاریخ، سپس بر اساس زمان شروع در هر روز مرتب شود.
+ `<keyword>`: کلیدواژه مورد نظر برای جستوجو
**فرمت خروجی:**
```
Search Results:
| <date> | <start_time>-<end_time> | <title> |
```
+ اگر هیچ عنوانی شامل کلیدواژه نباشد:
```
Search Results:
No matching events found.
```
</details>
<details class="purple">
<summary>
**بررسی تداخل زمانی رویدادها**
</summary>
```
CONFLICTS --date <date>
```
این دستور تمام رویدادهایی که در تاریخ مشخص با یکدیگر همپوشانی زمانی دارند را نمایش میدهد.
+ `<date>`: تاریخ مورد نظر به فرمت `yyyy-mm-dd`
**قوانین:**
+ تداخل زمانی یعنی دو یا چند رویداد در همان روز بازههای زمانی مشترک (حتی جزئی) دارند.
**فرمت خروجی:**
```
Conflict Detected:
| <date> | <start_time>-<end_time> | <title> |
```
+ اگر هیچ تداخلی وجود نداشته باشد:
```
No conflicts found on <date>.
```
</details>
## **نکات قابل توجه**
+ ورودیها از طریق فلگهای مشخص شده وارد میشوند و ترتیب آنها آزاد است و لزوماً به ترتیب ذکر شده در متن وارد نمیشوند.
+ در صورتی که هر یک از بخشهای مسئله را به درستی پیادهسازی کردید، امتیاز آن را مستقل از سایر بخشها خواهید گرفت. (البته دقت کنید در صورتی که دستور `ADD` شما به درستی کار نکند، امتیاز سایر بخشهای برنامه را نخواهید گرفت.)
+ برای گرفتن امتیاز کامل، به کوچکی یا بزرگی حروف در خروجی دقت کنید.
+ تضمین میشود ساختار دستورات و فرمت تاریخها به درستی وارد خواهد شد. زمانها در قالب ۲۴ ساعته `hh:mm` و تاریخها در قالب `yyyy-mm-dd` یا `yyyy-mm` هستند.
+ تعداد رویدادها حداکثر ۱۰,۰۰۰ عدد است.
+ عنوان رویداد حداکثر ۱۰۰ کاراکتر دارد.
+ خروجی رویدادها همیشه بر اساس زمان شروع به صورت صعودی مرتب باشد (ابتدا به ترتیب تاریخ، سپس بر اساس زمان شروع در هر روز مرتب شود). رویدادهای ورودی لزوماً به ترتیب زمانی صعودی وارد نمیشوند.
+ رعایت اصول و قوانین کد تمیز و شیگرایی حائز اهمیت میباشد.
## **ورودی**
سطر اول ورودی شامل یک عدد صحیح و مثبت $n$ است که تعداد دستورهای ورودی را نشان میدهد.
$$1≤n≤1000$$
در $n$ سطر بعدی ورودی، هر سطر شامل یکی از دستورهای ذکر شده است.
## **خروجی**
خروجیهای خواسته شده برای هر دستور را به ترتیب چاپ کنید.
## ورودی نمونه ۱
```
7
ADD --date 2025-06-01 --start 09:00 --end 10:00 --title "Morning Standup"
ADD --start 09:30 --end 11:00 --date 2025-06-01 --title "Client Call"
ADD --date 2025-06-01 --start 13:00 --end 14:00 --title "Lunch with Team"
CONFLICTS --date 2025-06-01
SEARCH --keyword call
REMOVE --date 2025-06-01 --start 09:30
LIST --date 2025-06-01
```
## خروجی نمونه ۱
```
Created event at 2025-06-01 09:00
Created event at 2025-06-01 09:30
Created event at 2025-06-01 13:00
Conflict Detected:
| 2025-06-01 | 09:00-10:00 | Morning Standup |
| 2025-06-01 | 09:30-11:00 | Client Call |
Search Results:
| 2025-06-01 | 09:30-11:00 | Client Call |
Removed event at 2025-06-01 09:30
Day View: 2025-06-01
| 2025-06-01 | 09:00-10:00 | Morning Standup |
| 2025-06-01 | 13:00-14:00 | Lunch with Team |
```
### توضیحات:
+ دو رویداد اول (09:00–10:00 و 09:30–11:00) بازهی زمانی مشترک دارند.
+ جستجوی واژهی «call» فقط یک مورد پیدا میکند.
+ حذف انجام میشود، چون تاریخ و ساعت شروع دقیقاً مشخص شده.
+ خروجی `LIST` فقط رویدادهای باقیمانده را نشون میدهد.
## ورودی نمونه ۲
```
6
ADD --title "Project Kickoff" --date 2025-07-01 --start 10:00 --end 11:00
ADD --date 2025-07-03 --start 14:00 --end 15:00 --title "Code Review"
ADD --start 09:00 --end 10:30 --title "Client Feedback" --date 2025-07-10
EDIT --date 2025-07-03 --start 14:00 --title "Team Sync"
WEEK --date 2025-07-01
MONTH --month 2025-07
```
## خروجی نمونه ۲
```
Created event at 2025-07-01 10:00
Created event at 2025-07-03 14:00
Created event at 2025-07-10 09:00
Edited event at 2025-07-03 14:00
Week View (2025-07-01 to 2025-07-07):
| 2025-07-01 | 10:00-11:00 | Project Kickoff |
| 2025-07-03 | 14:00-15:00 | Team Sync |
Month View: 2025-07
| 2025-07-01 | 10:00-11:00 | Project Kickoff |
| 2025-07-03 | 14:00-15:00 | Team Sync |
| 2025-07-10 | 09:00-10:30 | Client Feedback |
```
### توضیحات:
+ سه رویداد اضافه شدند که تداخلی با هم ندارند.
+ دستور `EDIT` عنوان رویداد دوم را تغییر میدهد.
+ با دستور `WEEK` همه رویدادها بین تاریخ `2025-07-01` تا تاریخ `2025-07-07` به ترتیب زمان نمایش داده میشوند.
+ با دستور `MONTH` همه رویدادها مرتب به ترتیب زمان شروع نمایش داده میشوند.
گوگل کلندر CLI
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
کداستار میخواهد یک مجله راه بیاندازد که در آن برای برنامهنویسها سرگمی و معماهای فکری جالب داشته باشد. در مجلهی کداستار برای نمایش اعداد با چوبکبریت از الگوی زیر استفاده میکنیم:

معمای چوبکبریت به این صورت است که یک عبارت از جمع دو عدد یک رقمی را نمایش میدهیم. از شما میخواهیم با جابهجا کردن کمترین تعداد چوبکبریت لازم کاری کنید که این معادله از نظر ریاضی درست شود.
توجه کنید عبارت شما باید بازهم به صورت جمع یا تفریق دو عدد یک رقمی و نامنفی با حاصل یک رقمی و نامنفی باشد. همچنین میتوانید جای علامتها را عوض کنید ولی نمیتونید تساوی را به نامساوی تغییر دهید.
دقت کنید در صورتی که دو چوب کبریت باهم جابهجا شوند، تعداد حرکات جابهجایی ۲ عدد است.
اگر نمیتوان با جابهجا کردن چوبکبریتها به عبارت درستی رسید، بهجای تعداد، `-1` چاپ کنید.
برای بهتر متوجه شدن خواستهی سوال مثالها را مطالعه کنید.
# ورودی
در سطر اول ورودی، عدد صحیح $t$ آمده که تعداد تستها را نشان میدهد.
$$1 \leq t \leq 4000$$
در $t$ سطر بعدی، در هر سطر یک عبارت داده میشود.
# خروجی
در $t$ سطر مختلف، به ترتیب کمترین تعداد چوبکبریتی که باید جابهجا کرد تا عبارت درست شود را چاپ کنید و در صورتی که این کار شدنی نیست `-1` چاپ کنید.
# مثالها
## ورودی نمونه ۱
```
6
5 = 2 + 3
1 + 7 = 2
3 - 2 = 0
1 = 0 - 4
1 - 1 = 1
6 + 9 = 8
````
## خروجی نمونه ۱
```
0
3
1
2
-1
2
````
+ در تست اول، عبارت $5 = 2 + 3$ درست است و بدون جابهجایی چوب کبریت معما حل میشود.
+ در تست دوم، عبارت $1 + 7 = 2$ با جابهجا کردن ۳ چوب کبریت به $1 = 7 - 6$ تبدیل میشود و این کار با جابهجایی ۲ یا تعداد کمتری چوبکبریت ممکن نیست.
+ در تست سوم، عبارت $3 - 2 = 0$ با جابهجا کردن ۱ چوبکبریت به $2 - 2 = 0$ تبدیل میشود.
+ در تست چهارم، عبارت $1 = 0 - 4$ با جابهجا کردن ۲ چوبکبریت به $1 = 8 - 7$ تبدیل میشود.
+ در تست پنجم، عبارت $1 - 1 = 1$ به هیچ طریقی قابل تبدیل به یک عبارت درست نیست.
+ در تست ششم، عبارت $6 + 9 = 8$ با جابهجا کردن ۲ چوبکبریت به $8 - 0 = 8$ تبدیل میشود.
مجله کداستار
+ محدودیت زمان: ۳ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
ابوالفضل یک قاب مربعی خیلی خیلی بزرگ بر روی کاغذ دارد. رومینا در هر مرحله نخی محکم را از نقطهای از ضلع سمت چپ به نقطهای در ضلع پایینی قاب وصل میکند. در این میان ممکن است در بعضی از مراحل ابوالفضل گلولهای را از بخشی از ضلع چپ رها کند و قاب را با کاغذ پشت آن به صورت ایستاده درآورد.
در این حالت جاذبه گلوله را به سمت پایین میکشد و هر جا روی نخی قرار بگیرد، روی آن سر میخورد. ممکن است در حین سر خوردن به نخ دیگری گیر کند و به بنبست برسد، در این صورت همانجا میماند. در غیر این صورت آنقدر میرود تا به ضلع پایینی قاب برسد. میخواهیم قبل از متوقف شدن گلوله، به ما بگویید که آیا گلوله به ضلع پایینی میرسد یا خیر. همچنین اگر جواب بله است، در کدام نقطه متوقف میشود. به نمونههای ورودی برای فهم بهتر سر خوردن توجه کنید.
# ورودی
در خط اول ورودی عدد طبیعی $q$ میآید. سپس پس در هر یک از $q$ خط بعدی، در هر خط یکی از دو نوع پرسمان زیر میآید.
+ `1 y x`: در نوع یک، رومینا یک نخ از نقطهای با فاصله $y$ از گوشه پایین چپ قاب، در ضلع سمت چپ به نقطهی با فاصله $x$ از گوشه پایین چپ قاب، در ضلع پایین اضافه میکند. تضمین میشود در این دو نقطه قبلا هیچ نخی وصل نشده بوده است.
+ `2 y`: در نوع دوم، ابوالفضل گلوله را از نقطهای با فاصله $y$ از گوشه پایین چپ قابل، در ضلع سمت چپ رها میکند. تضمین میشود هیچ نخی از این نقطه وصل نشده است.
$$ 1 \leq q \leq 10^6 $$
$$ 1 \leq x, y \leq 10^9 $$
# خروجی
به ازای تمام عملیاتهای نوع دوم، در صورتی که گلوله به ضلع پایینی میرسد بگویید به کدام نقطه از ضلع پایینی میرسد و اگر بین دو نخ گیر میکند، `-1` را چاپ کنید.
# مثالها
## ورودی نمونه ۱
```
5
1 4 1
1 2 3
2 1
2 3
2 5
````
## خروجی نمونه ۱
```
0
-1
3
````
در شکل زیر، مسیر توپها نشان داده شده است.

## ورودی نمونه ۲
```
9
2 6
1 7 5
2 6
1 4 4
2 6
1 1 6
2 6
1 2 9
2 6
````
## خروجی نمونه ۲
```
0
0
4
-1
-1
````