+ محدودیت زمان: ۰.۵ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
+ سوال الگوریتمی
----------
یکی از آشنایان شما به تازگی مسئول بررسی آمار مبتلایان کرونا در یکی از مناطق کشور شده است. او بسیار باحوصله و بادقت است و به تازگی گزارشی از مبتلایان شهرهای مختلف به او رسیده و میخواهد وضعیت را بررسی کند. او برای این کار از مفاهیم زیر استفاده میکند:
+ **اعداد خوب:**
تمام اعداد، به جز کمترین و بیشترین آنها
+ **میانگین خوب:**
یک عدد صحیح که در واقع همان میانگینِ اعدادِ خوب است
او برای آمارهای کمتر از میانگین خوب، خوشحال و برای آمارهای بیشتر از میانگین خوب، ناراحت میشود.
خوشحالی و ناراحتی او خاص و عجیب است، به این صورت که درجۀ خوشحالی یا ناراحتیاش به تدریج بیشتر میشود. یعنی با مشاهده هر عدد که از میانگین خوب کوچکتر باشد یک درجه به درجه خوشحالیاش افزوده میشود و همچنین با مشاهده هر عدد بزرگتر از میانگین خوب، یک درجه به درجه ناراحتیاش افزوده میشود.
| درجه | خوشحالی | ناراحتی |
|:---:|:---:|:---:|
|۱|`:)`|`:(`|
|۲|`:))`|`:((`|
|۳|`:)))`|`:(((`|
و به همین ترتیب ادامه پیدا میکند.
حال او از شما میخواهد خوشحالی و ناراحتیاش را نشان دهید.
# راهنمایی
+ در صورتی که کمترین یا بیشترین عدد چند بار تکرار شده باشد، تمام آنها را نادیده بگیرید.
+ در صورتی که مقدار میانگین صحیح نبود، باید کوچکترین عدد صحیح بزرگتر از آن (سقف عدد اعشاری) را محاسبه کنید.
+ اگر هیچ عدد خوبی بین آمارها وجود نداشت مقدار `100` را به عنوانِ میانگین خوب در نظر بگیرید.
+ خوشحالی و ناراحتی مستقل از ترتیب اعداد است و فقط به تعداد اعداد کمتر یا بیشتر از میانگین خوب بستگی دارد.
+ در اولین مرحله درجهی خوشحالیاش ۱ است. (`:)`) با هر بار دیدن عدد کوچکتر از میانگین خوب خوشحال میشود و یک پرانتز نسبت به حالت قبلی اضافه میشود. درنهایت تعداد کل خوشحالیها برابر تعداد اعداد کمتر از میانگین خوب است. همچنین برای درجه ناراحتی هم به همین صورت است.
# ورودی
ورودی شامل تعدادی خط است که در هر خط آمار یک منطقۀ خاص $a_i$ آمده است و پایان دادهها با `---` نشانداده میشود.
$$0 \le a_i \le 10^4$$
$$3\le i \le 10^5$$
# خروجی
خروجی فقط شامل دو خط است و به ترتیب خوشحالی و ناراحتی او را نشان میدهد.
**برای درک بهتر مسئله به مثالها توجه کنید.**
# مثال
## ورودی نمونه ۱
```
0
60
100
---
```
## خروجی نمونه ۱
```
:)
:(
```
<details class="blue">
<summary>
توضیح نمونه ۱
</summary>
ابتدا کمترین (`0`) و بیشترین (`100`) آمار حذف میشوند. پس میانگین خوب برابر `60` است. برای آمار `100` ناراحت و برای آمار `0` خوشحال میشود.
</details>
## ورودی نمونه ۲
```
0
10
20
30
40
50
60
70
80
90
100
---
```
## خروجی نمونه ۲
```
:) :)) :))) :)))) :)))))
:( :(( :((( :(((( :(((((
```
<details class="blue">
<summary>
توضیح نمونه ۲
</summary>
در مرحلۀ اول کمترین (`0`) و بیشترین (`100`) عدد حذف میشود و میانگین اعداد باقیمانده محاسبه میشود. در نهایت میانگین خوب `50` است. پس به تعداد اعداد کمتر از میانگین خوب خوشحال میشود و درجۀ خوشحالیاش در هر مرحله مانند جدول گفته شده افزایش مییابد. همچنین به تعداد اعدادی که بیشتر از میانگین هستند ناراحت میشود و در هر مرحله درجۀ ناراحتیاش بیشتر میشود.
</details>
## ورودی نمونه ۳
```
10
90
90
95
100
100
90
90
---
```
## خروجی نمونه ۳
```
:) :)) :))) :)))) :)))))
:( :(( :(((
```
<details class="blue">
<summary>
توضیح نمونه ۳
</summary>
در مرحلۀ اول کمترین (`10`) و بیشترین (`100`) اعداد حذف میشوند و میانگین اعداد باقیمانده محاسبه میشود. در نهایت میانگین خوب `91` خواهد بود. پس به تعداد اعداد کمتر از میانگین خوب خوشحال میشود(۵ بار) و درجۀ خوشحالیاش در هر مرحله مانند جدول گفته شده افزایش مییابد. همچنین به تعداد اعدادی که بیشتر از میانگین هستند (۳ بار) ناراحت میشود و در هر مرحله درجۀ ناراحتیاش بیشتر میشود.
</details>
+ محدودیت زمان: ۲ ثانیه
+ محدودیت حافظه: ۵۰ مگابایت
+ سوال الگوریتمی
----------
در پی اوجگرفتن شیوع یک بیماری در سرزمینی دورافتاده، مسئولین به فکر یکطرفهکردن جادهها افتادهاند! با این که این کار به نظر تأثیری در وضعیت شیوع بیماری ندارد، آنها اصرار بر انجام این امر دارند. حالا از شما خواسته شده با دریافت اطلاعات شهرها و مسیرهای دوطرفۀ بین آنها، بررسی کنید که آیا میشود مسیرها را یکطرفه کرد به گونهای که از هر شهری بتوانیم به تمامِ شهرهای دیگر برویم یا خیر.
دقت کنید که با توجه به دوطرفهبودنِ مسیرها، تمام شهرها به صورت مستقیم یا با واسطه به یکدیگر راه دارند (به عبارت دیگر، یک گراف سادۀ همبند را تشکیل میدهند).
برای سهولت نام شهرها داده نمیشود و $n$ شهر با عدد $1$ تا $n$ مشخص میشوند.
# ورودی
در خط اول ورودی به ترتیب $n$ و $m$ که تعداد شهرها و مسیرها هستند میآید.
$$0 < n \le 100\ 000$$
$$0 < m \le 300\ 000$$
در هر یک از $m$ خط بعدی یک مسیر داده میشود. هر مسیر با دو عدد که توسط فاصله (Space) از یکدیگر جدا شدهاند مشخص میشود.
به عنوان مثال خط زیر مسیری بین دو شهر $20$ و $28$ را مشخص میکند (بدیهی است که در این مثال $n$ بزرگتر یا مساوی $28$ است):
```
28 20
```
# خروجی
اگر با یکطرفهکردن تمام مسیرها بتوان از هر شهری به تمامی شهرهای دیگر سفر کرد، در خروجی عبارت `EYVAL` چاپ شود و در ادامه یک مثال از نحوۀ جهتدهی مسیرها آورده شود؛ در غیر این صورت، در خروجی عبارت `BIKHIAL` را چاپ کنید.
دقت کنید که در مثال ارائهشده، هر مسیر را در یک خط و با دو عدد نشان دهید که اولین عدد مبدأ و دومین عدد مقصد است. به عنوان مثال خط زیر مسیری یکطرفه از شهر $11$ به شهر $134$ را نشان میدهد:
```
11 134
```
# مثال
## ورودی نمونه ۱
```
6 8
1 2
2 3
1 3
4 5
4 6
5 6
2 4
3 5
```
## خروجی نمونه ۱
```
EYVAL
2 1
3 2
1 3
5 4
6 4
5 6
4 2
3 5
```
<details class="blue">
<summary>توضیحات نمونه ۱</summary>
ورودی داده شده مانند شکل زیر است:
![ورودی](https://uupload.ir/files/4z6o_graph1in.png)
ورودی را میتوان به شکل زیر جهتدار کرد:
![خروجی](https://uupload.ir/files/eq02_graph1out.png)
</details>
## ورودی نمونه ۲
```
6 7
1 2
2 3
1 3
4 5
4 6
5 6
2 4
```
## خروجی نمونه ۲
```
BIKHIAL
```
<details class="blue">
<summary>توضیحات نمونه ۲</summary>
ورودی داده شده مانند شکل زیر است که به هیچ طریقی نمیتواند مطلوبات مسئله را برآورده کند.
![ورودی](https://uupload.ir/files/7c8n_graph2in.png)
</details>
الگوریتمی - اقدامات اساسی
+ محدودیت زمان: ۲ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
+ سوال پیادهسازی
----------
پس از اوجگیری دوباره شیوع ویروس کرونا، مسئولین تصمیم گرفتند تا با استفاده از دادههای در دسترس، راهی برای مقابله با این ویروس پیدا کنند. در این سوال قصد داریم ابزاری طراحی کنیم که با تحلیل دادههای در دسترس که شامل ترددها، آزمایشهای کرونا و اطلاعات خانوار ها میباشد؛ درخواستهای موردنیاز مسئولین را مرتفع کند.
برای سادهسازی مسئله، فرضهای زیر را در نظر میگیریم.
+ شهر ها با `شناسهی شهر` که عددی بین `1` تا `c`(که در ورودی داده میشود) مشخص میشوند.
+ افراد با `شناسهی فرد` که عددی بین `1` تا `n`(که در ورودی داده میشود) مشخص میشوند.
+ هر فرد میتواند در هیچ، یک و یا بیشتر از یک خانواده قرار داشتهباشد. (اگر یک فرد در دو خانواده باشد، اعضای آن خانواده با هم خویشاوند محسوب میشوند)
+ تاریخ تردد و تاریخ آزمایش بهصورت عددی بین `1` تا `365` تعریف میشود.
+ تردد میتواند از یک شهر به شهر دیگر و یا از یک شهر به همان شهر باشد؛ که در حالت اول، شناسهی شهر مبدا و مقصد متفاوت بوده و در حالت دوم شناسهی مبدا و مقصد یکی میباشد.
+ در صورتی که آزمایش یک فرد در روز `i` ام `positive` شود؛ فرد موردنظر و تمام افرادی که با او در یک خانواده هستند (تمام خانوادههایی که فرد در آنها قرار دارد) از روز `i` ام تا روز `i+7` که شامل `8` روز میباشد؛ **مبتلا به کرونا** محسوب میشوند.
+ متخلف کسی است که در دورهای که به کرونا مبتلا شدهاست؛ ترددی از یک شهر به شهر دیگر انجام دهد و هر تردد اینگونهی او یک تخلف محسوب میشود.(تردد از یک شهر به همان شهر تخلف محسوب نمیشود)
# ورودی
1. در خط اول ورودی $n$ (تعداد افراد مورد بررسی) وارد میشود. شناسهی افراد از `1` تا `n` میباشد.
2. در خط دوم، $m$ (تعداد خانوادهها) وارد میشود.
3. سپس در $m$ خط بعدی، اعضای خانواده $i$م با یک فاصله از هم وارد میشوند.
4. سپس $c$ (تعداد شهرها) وارد میشود. شناسهی شهرها از `1` تا `c` میباشد.
5. سپس $p$ (تعداد تردد های ثبتشده) وارد میشود.
6. در $p$ خط بعدی، در هر خط شناسهی فرد، شناسهی شهر مبدا، شناسهی شهر مقصد و تاریخ تردد با یک فاصله از هم بهصورت زیر وارد میشوند.
```
personId srcCity dstCity date
```
7. سپس $t$ (تعداد آزمایشهای کرونا) وارد میشود.
8. در $t$ خط بعدی، در هر خط شناسهی فرد، نتیجهی آزمایش(که یا `positive` است یا `negative`)، شناسهی شهر محل آزمایش و تاریخ آزمایش با یک فاصله از هم بهصورت زیر وارد میشوند.
```
personId testResult testCity date
```
9. سپس $q$ (تعداد درخواستها) وارد میشود.
10. در $q$ خط بعدی، در هر خط یکی از درخواستهای تعریفشده در بالا وارد میشود.
$$ 0 < n \le 100 $$
$$ 0 < m , c , p , t, q\le 30 $$
### درخواست ها
**پیادهسازی هر یک از درخواستها ۴۰ امتیاز دارد.**
1. درخواست `Q1` :
این درخواست، افراد با بیشترین تخلفها را بهترتیب نزولی خروجی میدهد و بهصورت زیر وارد میشود.
```
Q1 count
```
که `count` تعداد افرادی که باید خروجی بدهد را نشان میدهد.(در صورت برابر بودن تخلف های دو فرد، فرد با شناسهی کوچکتر، بالاتر قرار میگیرد.).
این دستور به شکل دیگری نیز وارد میشود که دارای `تاریخ شروع` و `تاریخ پایان` است؛ که همانند حالت قبلیاست با این تفاوت که بیشترین تخلفها را از `تاریخ شروع` تا `تاریخ پایان` نشان میدهد.
```
Q1 count fromDate toDate
```
----------
2. درخواست `Q2` :
این درخواست، افراد با بیشترین تعداد آزمایش مثبت خود (نه اعضای خانواده) را بهترتیب نزولی خروجی میدهد و بهصورت زیر وارد میشود.
```
Q2 count
```
که `count` تعداد افرادی که باید خروجی بدهد را نشان میدهد.(در صورت برابر بودن تعداد آزمایش مثبتهای دو فرد، فرد با شناسهی کوچکتر، بالاتر قرار میگیرد.).
این دستور به شکل دیگری نیز وارد میشود که دارای `تاریخ شروع` و `تاریخ پایان` است؛ که همانند حالت قبلیاست با این تفاوت که بیشترین تعداد آزمایش مثبت را از `تاریخ شروع` تا `تاریخ پایان` نشان میدهد.
```
Q2 count fromDate toDate
```
----------
3. درخواست `Q3`:
این درخواست، شهر هایی که بیشترین آزمایش مثبت را ثبت کردهاند؛ بهترتیب نزولی خروجی می دهد و بهصورت زیر وارد میشود.
```
Q3 count
```
که `count` تعداد شهرهایی که باید خروجی بدهد را نشان میدهد.(در صورت برابر بودن آزمایشهای مثبت دو شهر، شهر با شناسهی کوچکتر، بالاتر قرار میگیرد.).
این دستور به شکل دیگری نیز وارد میشود که دارای `تاریخ شروع` و `تاریخ پایان` است؛ که همانند حالت قبلیاست با این تفاوت که شهر هایی که بیشترین آزمایش مثبت را از `تاریخ شروع` تا `تاریخ پایان` داشتهاند؛ نشان میدهد.
```
Q3 count fromDate toDate
```
----------
4. درخواست `Q4`:
این درخواست، با دریافت شناسهی شهر، روزهایی که بیشترین تعداد آزمایش مثبت را داشتهاند؛ بهترتیب نزولی خروجی میدهد و بهصورت زیر وارد میشود.
```
Q4 CityId count
```
که `count` تعداد روزهایی که باید خروجی بدهد را نشان میدهد.(در صورت برابر بودن تعداد آزمایشهای مثبت دو روز، روز با عدد کوچکتر، بالاتر قرار میگیرد.)
----------
5. درخواست `Q5`:
این درخواست، روزهایی از سال با بیشترین آمار مبتلا به کرونا را بهصورت نزولی خروجی میدهد(به این نکته توجه شود که هر فرد، از روز آزمایش مثبت تا ۷ روز بعد، مبتلا به کرونا محسوب میشود) و بهصورت زیر وارد میشود.
```
Q5 count
```
که `count` تعداد روزهایی که باید خروجی بدهد را نشان میدهد.(در صورت برابر بودن تعداد مبتلایان دو روز، روز با عدد کوچکتر، بالاتر قرار میگیرد).
# خروجی
برای هر درخواست ابتدا در یک خط نوع درخواست که یکی از مقادیر
`Q1`، `Q2`، `Q3`، `Q4`، یا `Q5` میباشد نمایشداده میشود و سپس نتیجهی درخواست که متناسب با نوع درخواست به صورت زیر میباشد؛ در خروجی نمایشداده میشود.
1. درخواست `Q1` :
خروجی شامل `count` خط است که در هر خط ابتدا شناسهی فرد و سپس تعداد تخلفهای فرد نمایش داده میشود.
2. درخواست `Q2` :
خروجی شامل `count` خط است که در هر خط ابتدا شناسهی فرد و سپس تعداد آزمایشهای مثبت شخص نمایش داده میشود.
3. درخواست `Q3` :
خروجی شامل `count` خط است که در هر خط ابتدا شناسهی شهر و سپس تعداد آزمایشهای مثبت نمایش داده میشود.
4. درخواست `Q4` :
خروجی شامل `count` خط است که در هر خط ابتدا روز و سپس تعداد آزمایشهای مثبت نمایش داده میشود.
5. درخوست `Q5` :
خروجی شامل `count` خط است که در هر خط ابتدا روز و سپس تعداد مبتلایان نمایش داده میشود.
# مثال
## ورودی نمونه ۱
```
6
3
1 2
3 4
2 5
3
2
1 1 3 20
1 3 1 30
3
1 negative 1 20
1 positive 2 28
3 negative 1 360
1
Q1 3
```
## خروجی نمونه ۱
```
Q1
1 1
2 0
3 0
```
<details class="blue" >
<summary>توضیحات نمونهی ۱</summary>
فرد با شناسهی `1` در روز `28` ام یک آزمایش مثبت داشته و در تاریخ `30` ام ترددی از یک شهر به شهر دیگر انجام دادهاست که یک تخلف محسوب می شود. با توجه به اینکه بقیهی افراد تخلفی نکردهاند اما `3` درخواست شدهاند؛ افراد به ترتیب صعودی شناسه، نمایش داده میشوند.
</details>
## ورودی نمونه ۲
```
6
3
1 2
3 4
2 5
3
2
1 1 3 20
1 3 1 30
5
1 negative 1 20
1 positive 2 28
3 negative 1 35
2 positive 3 51
5 positive 1 28
4
Q2 4
Q3 2
Q4 2 1
Q5 3
```
## خروجی نمونه ۲
```
Q2
1 1
2 1
5 1
3 0
Q3
1 1
2 1
Q4
28 1
Q5
28 3
29 3
30 3
```
پیادهسازی - ابزار کارآمد
+ محدودیت زمان: ۴ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
+ سوال الگوریتمی
----------
یک [گراف وزندار](https://fa.wikipedia.org/wiki/%DA%AF%D8%B1%D8%A7%D9%81_%D9%88%D8%B2%D9%86%E2%80%8C%D8%AF%D8%A7%D8%B1) بدون جهت داریم که میتوانیم آن را به صورت یک شبکهی جدولی هم در نظر بگیریم که دارای
$n$
سطر و
$m$
ستون است.مجموعهی رئوس گراف را به شکل زیر تعریف میکنیم:
$$\left\{(i,j)|1\le i \le n,1 \le j \le m\right\}$$
بین دو راس
$(i_1,j_1)$
و
$(i_2,j_2)$
یال وجود دارد اگر و تنها اگر فاصلهی منهتنی آن ها برابر
$1$
باشد.
(فاصلهی منهتنی دو خانه را برابر مجموع فاصلههای افقی و عمودی خانههای جدول تعریف میکنیم.)
خستگی یک مسیر در گراف برابر مجموع اعدادی است که روی یالهای آن مسیر نوشتهشدهاست.(اعداد روی یالها در ورودی آمده است.)
شما باید به ازای هر خانه از جدول
$n \times m$
(به عبارتی هر راس گراف) پاسخ سوال زیر را مشخص کنید:
حداقل میزان خستگی اگر بخواهیم با شروع از این خانهی جدول ، روی یالها حرکت کنیم (حرکت روی یک یال تکراری مجاز است) و بعد از دقیقا
$k$
مرحله به خانهی شروع بازگردیم چه قدر است؟
# ورودی
خط اول ورودی به ترتیب، شامل سه عدد `n` و `m` و `k`است.
`n` خط بعدی در هر خط `m-1` عدد میآیند که
$j$
امین عدد از
$i$
امین خط عدد روی یال بین دو خانهی
$(i, j)$
و
$ (i, j+1)$
را مشخص میکند.
`n-1` خط بعدی در هر خط `m` عدد میآیند که
$j$
امین عدد از
$i$
امین خط عدد روی یال بین دو خانهی
$(i, j)$
و
$(i+1, j) $
را مشخص میکند.
$$n,m \le 500$$
$$k \le 20$$
# خروجی
یک جدول
$n\times m$
که در خانهی
$i,j$
آن جواب سوال برای خانهی
$(i, j)$
باشد و اگر نمیتوانستیم بعد از دقیقا
$k$
حرکت به خانهی اولیه بازگردیم
`-1`
را چاپ کنید.
# مثال
## ورودی نمونه ۱
```
<mark title="n" class="red">4</mark> <mark title="m" class="orange">4</mark> <mark title="k" class="yellow">10</mark>
5 5 5
5 5 5
5 5 5
5 5 5
5 5 5 5
5 5 5 5
5 5 5 5
```
## خروجی نمونه ۱
```
50 50 50 50
50 50 50 50
50 50 50 50
50 50 50 50
```
## ورودی نمونه ۲
```
<mark title="n" class="red">4</mark> <mark title="m" class="orange">4</mark> <mark title="k" class="yellow">1</mark>
5 5 5
5 5 5
5 5 5
5 5 5
5 5 5 5
5 5 5 5
5 5 5 5
```
## خروجی نمونه ۲
```
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1
-1 -1 -1 -1
```
+ محدودیت زمان: ۱ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
+ سوال پیادهسازی
----------
رضا که بهتازگی بهعنوان حسابدار، در یک قنادی شروع بهکار کردهاست؛او متوجه شدهاست بسیاری از محاسباتی که انجام میدهد تکراری بوده و زمان زیادی از او میگیرد. به همین دلیل دنبال ماشینحسابی است که علاوه بر اعمال اصلی، بتواند از دستور های پیشرفته پشتیبانی کند و امکان شخصیسازی داشتهباشد.
اعمال اصلی که این ماشینحساب آنها را پشتیبانی میکند شامل
جمع (`+`)، تفریق (`-`)، ضرب (`*`)، تقسیم (`/`)، توان (`^`) میباشد. اولویت این اعمال مشابه اولویت آنها در ریاضی است.(به ترتیب پرانتز ، توان ، ضرب و تقسیم از چپ به راست ، جمع و تفریق از چپ به راست)
در این سوال قصد داریم ماشینحساب موردنیاز رضا را پیادهسازی کنیم.
دستوراتی که توسط رضا به شما داده میشوند به صورت زیر هستند:
```
operand1 operator operand2 = definition
```
+ `operand1` و `operand2` ترکیبی از حداکثر ۵۰ حرف کوچک و بزرگ انگلیسی است.
+ `operator` ترکیبی از حداکثر ۵۰ حرف کوچک و بزرگ انگلیسی و ارقام است و تضمین میشود کاراکتر اول حرف است.
+ تضمین میشود که در هر دستور، مقادیر وارد شده بهجای `operand1` ،`operator` و `operand2` همگی متمایز باشند.
+ همچنین هیچ دو دستوری، دارای `operator` یکسان نمیباشند.
+ عبارت جبری که به جای `definition` وارد میشود؛ یک عبارت جبری است که متغیر های آن `operand1` و `operand2` میباشد. جزئیات مربوط به `definition` در قسمت امتیازدهی توضیح داده شدهاست.
نمونه ای از این دستورات را به صورت زیر هستند:
```
a sum b = 2*a+b
a trick b = a^b/b
a square b = a^2+b^2
```
این دستورات تعریفشده هنگام استفاده از ماشینحساب به صورت زیر استفاده میشوند:
```
2 sum 3
```
که بهصورت
$2*2+3$
محاسبهشده و خروجی زیر را میدهد.
```
7
```
و برای دستور `square` داریم:
```
3 square 3 = 3^2+3^2
```
که بهصورت $3^2+3^2$ محاسبهشده و خروجی زیر را میدهد.
```
18
```
**دقت کنید** این ماشینحساب از بقیه ماشینحسابها مستثنی نیست و از **پرانتزگذاری** پشتیبانی میکند و شما باید بیشترین اولویت محاسباتی را به پرانتز اختصاص دهید.
# دستورات
```
Add Command
```
با آمدن این دستور، در خط بعد از آن دستوری که مدیر قنادی میخواهد به ماشین حسابش اضافه کند میآید. (مانند شبه دستورات بالا که آورده شده است.)
```
Calculate
```
با آمدن این دستور، در خط بعد از این دستور شما باید عبارتی که برای محاسبه در خط بعد از این میآید را حساب کنید و جواب را در خروجی چاپ کنید.
```
End
```
با آمدن این دستور نیز برنامه به پایان میرسد.
<details class="blue">
<summary>زیر مسئله اول
(**۱۲۰ امتیاز**)
</summary>
در این قسمت، ماشینحساب از دستورات شخصیسازی شده پشتیبانی نمیکند و همانند ماشینحساب ساده فقط عبارتهای جبری شامل اعمال اصلی را محاسبه میکند.
+ ممکن است در ورودی برنامه با عبارت `Add Command ` دستوری تعریف شود؛ اما تضمین میشود در قسمت `Calculate` فقط از اعمال اصلی استفاده میشود.
</details>
<details class="pink">
<summary>زیر مسئله دوم
(**۱۸۰ امتیاز**)
</summary>
+ در این قسمت، ماشینحساب از دستورات شخصیسازی شده پشتیبانی میکند و عبارت تعریف شده در قسمت `definition` فقط شامل اعمال اصلی میباشد.
+ تضمین میشود ورودی ها به نحوی پرانتزگذاری شود تا نیازی به دانستن اولویت دستور های تعریفشده نباشد.
</details>
**تضمین میشود** همه اعداد صحیح هستند.
**تضمین میشود** در تقسیمها اعداد بخشپذیر هستند و هیچگاه تقسیم بر صفر انجام نمیشود.
**تضمین میشود** مقدار خروجی به صورت
$-10^6 \le value \le 10^6$
است.
# مثال
## ورودی نمونه ۱
```
Add Command
a Comp b = 2*a+b
Add Command
a trick b = a^b/b
Add Command
a square b = a^2+b^2
Calculate
(2 trick 4)+3
Calculate
(4 square 1)*(1 Comp 1)
End
```
## خروجی نمونه ۱
```
7
51
```
## ورودی نمونه ۲
```
Add Command
a row b = (a)^b
Add Command
a beEqual b = b
Add Command
a col b = (a+b)/(a*b)
Calculate
((3 row 2)+3*(0*(2+1)+(1 beEqual 3)))/(2 col 2)
End
```
## خروجی نمونه ۲
```
18
```
پیادهسازی - ماشینحساب پیشرفته!