+ محدودیت زمان: ۲ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
----------
علی به تازگی با برنامه نویسی آشنا شده است و برای همین ذوق خاصی دارد. از این رو میخواهد سیستمی طراحی کند که یک لیگ فوتبال را شبیه سازی میکند.
در این سیستم، دستورات مختلفی وجود دارند که به شرح زیر میباشند:
# **ساختن بازیکن جدید**
```
new player name price speed finishing defence
```
این دستور، بازیکنی با نام `name`، قیمت `price`، سرعت `speed`، قدرت تمامکنندگی `finishing` و دفاع `defence` میسازد.
توجه کنید که `name` از جنس رشته، و باقی پارامترها از جنس عدد میباشند.
هر بازیکن، یک شناسهی عددی دارد که با استفاده از آن میتوان به آن بازیکن دسترسی داشت، اولین بازیکنی که ساخته میشود شناسهی عددی ۱، دومین بازیکنی که ساخته میشود شناسهی عددی ۲ و $i$-امین بازیکنی که ساخته میشود شناسهی عددی $i$ دارد.
# **ساختن تیم جدید**
```
new team name money
```
با استفاده از این دستور، میتوانید یک تیم جدید با نام `name` و پول `money` بسازید. در صورتی که از قبل تیمی با اسم `name` وجود داشته باشد، تیم جدیدی ساخته **نمیشود**.
همچنین `name` از جنس رشته و `money` از جنس عدد میباشد.
هر تیم، یک شناسهی عددی دارد که با استفاده از آن میتوان به آن تیم دسترسی داشت، اولین تیمی که ساخته میشود شناسهی عددی ۱، دومین تیمی که ساخته میشود شناسهی عددی ۲ و $i$-امین تیمی که ساخته میشود شناسهی عددی $i$ دارد.
# **خرید بازیکن توسط تیم**
```
buy playerID teamID
```
با استفاده از این دستور، تیم با شناسهی عددی `teamID` بازیکن با شناسهی عددی `playerID` را میخرد.
همچنین همانطور که در بالا گفته شد، هر بازیکن یک قیمت (price) دارد و هر تیمی مقداری پول `money` دارد و هنگام خرید یک بازیکن باید تیم مورد نظر پول کافی را برای خرید بازیکن داشته باشد و در صورتی که خرید موفقیت آمیز باشد، از پول تیم، به میزان قیمت بازیکن مورد نظر کم میشود.
توجه کنید که در امر خرید بازیکن ممکن هست حالتهای مختلفی پیش بیاید:
+ در صورتی که بازیکنی با شناسهی عددی `playerID` وجود نداشته باشد، باید عبارت `player with the id playerID doesnt exist` را چاپ کنید.
+ در صورتی که تیمی با شناسهی عددی `teamID` وجود نداشته باشد، باید عبارت `team with the id teamID doesnt exist` را چاپ کنید.
+ در صورتی که تیم مورد نظر، پول کافی برای خرید بازیکن را نداشته باشد باید عبارت `the team cant afford to buy this player` را چاپ کنید.
+ در صورتی که بازیکن مورد نظر، در تیمی عضو باشد، باید عبارت `player already has a team` را چاپ کنید.
در صورتی که هیچکدام از حالت های بالا پیش نیایند، با موفقیت بازیکن مورد نظر خریداری میشود و باید عبارت `player added to the team succesfully` را چاپ کنید.
**توجه کنید** که ممکن است چندین مورد از حالتهای بالا پیش بیایند، در این صورت شما باید **اولین** حالتی که پیش میآید را در نظر گرفته و خروجی مورد نظر را چاپ کنید و از بقیه حالتها صرف نظر کنید.
# **فروش بازیکن**
```
sell playerID teamID
```
برای فروش بازیکن میتوان از دستور بالا استفاده کرد. با استفاده از این دستور، تیم با شناسهی عددی `teamID` بازیکن با شناسهی عددی `playerID` را به فروش میرساند.
همچنین موقع فروش بازیکن ممکن است حالتهای مختلفی پیش بیایند:
+ در صورتی که تیمی با شناسهی عددی `teamID` وجود نداشته باشد، باید عبارت `team doesnt exist` را چاپ کنید.
+ در صورتی که تیم مورد نظر وجود داشته باشد اما بازیکنی با شناسهی عددی `playerID` در آن تیم وجود نداشته باشد، باید عبارت `team doesnt have this player` را چاپ کنید.
در صورتی که حالتهای بالا پیش نیایند، یعنی با موفقیت بازیکن مورد نظر فروخته شده است و این بازیکن دیگر به تیمی تعلق ندارد (ممکن است در آینده توسط تیمی خریداری شود). در این حالت به اندازهی **قیمت بازیکن** فروخته شده، به پول تیم مورد نظر **افزوده میشود**. همچنین در این حالت باید عبارت `player sold succesfully` را چاپ کنید.
# **انجام بازی بین دو تیم**
```
match teamID1 teamID2
```
با استفاده از این دستور، دو تیم با شناسههای عددی `teamID1` و `teamID2` با یکدیگر بازی میکنند.
همچنین ممکن است در اجرای این دستور، حالتهای مختلفی پیش بیاید:
+ اگر حداقل یکی از دو تیم وجود نداشته باشد، باید عبارت `team doesnt exist` را چاپ کنید.
+ اگر دو تیم مورد نظر وجود داشتند، اما حداقل یکی از آنها تعداد بازیکنهایش **کمتر از ۱۱ نفر** باشد، بازی انجام نمیشود و باید عبارت `the game can not be held due to loss of the players` را چاپ کنید.
در صورتیکه هیچکدام از مشکلات بالا پیش نیاید، بازی با موفقیت انجام میشود.
در ابتدا برای توصیف روند بازی، نیاز به تعریف پارامتر **قدرت** برای هر تیم داریم.
قدرت تیم اول (تیم با شناسهی عددی `teamID1`) برابر است با مجموع **سرعت** و **تمامکنندگی** ۱۱ بازیکن اول آن تیم.
همچنین قدرت تیم دوم (تیم با شناسهی عددی `teamID2`) برابر است با مجموع **سرعت** و **دفاع** ۱۱ بازیکن اول آن تیم.
**توجه کنید** که ترتیب بازیکنها در یک تیم، همان ترتیب زمانی اضافه شدن آنها به تیم میباشد.
در صورتی که قدرت دو تیم باهم برابر نباشد، تیمی برندهی بازی میشود که **قدرت بیشتری** دارد و به تعداد بردهای تیم برنده یک واحد اضافه میشود و به تعداد باختهای تیم بازنده نیز یک واحد اضافه میشود و به تیم برنده، به عنوان جایزه **۱۰۰۰ واحد** پول داده میشود. در صورتی که قدرت دو تیم **برابر باشد**، بازی مساوی میشود و تعداد مساویهای هر دو تیم یک واحد افزایش پیدا میکند.
# **نمایش جدول تیمها**
```
rank
```
با استفاده از دستور بالا، باید جدول رتبهبندی تیمها را چاپ کنید.
شما باید تیمها را بر اساس تعداد بردها (هر تیمی که برد بیشتری داشته باشد رتبه بهتری دارد)، و در صورت برابری تعداد بردها، بر اساس تعداد باختهای کمتر مرتب کنید (اگر دو تیم بردهای برابری داشته باشند، تیم با باخت کمتر رتبه بهتری میگیرد) و به صورت زیر نام آنها را چاپ کنید:
```
1. teamName[0]
2. teamName[1]
...
```
که در آن `teamName[0]` تیم با رتبهی ۱، `teamName[1]` تیم با رتبهی ۲ و... میباشند.
توجه کنید که تعداد مساویها مهم نمیباشد و همچنین اگر دو تیم تعداد باختها و بردهایشان برابر بود، تیمی که شناسهی عددی کمتری دارد رتبهی بهتری میگیرد.
# **پایان لیگ**
```
end
```
در انتها، پس از تمام شدن لیگ، عبارت بالا در خروجی داده میشود و به این معنی است که ورودیها تمام شده است و برنامه شما نیز پایان مییابد.
# ورودی
ورودی شامل چندین خط میباشد که در هر خط یکی از دستوراتی که در صورت سوال گفته شد، داده میشود.
همچنین در خط آخر ورودی، دستور `end` داده میشود.
**توجه کنید** که ممکن است در ورودی داده شده، بعضی از خط ها خالی باشند و هیچ دستوری در آنها نباشد.
# خروجی
پس از اجرای برخی از دستورها، باید خروجیهایی را چاپ کنید که در توضیحات هر دستور در صورت نیاز گفته شده است. توجه کنید که هر خروجی باید در یک خط چاپ شود و از چاپ تمامی خروجیها در یک خط پرهیز کنید.
# مثال
## ورودی نمونه ۱
```
new player ArshiA 1 2 3 4
new player sadegh 1 2 3 4
new player haniye 1 2 3 4
new player fateme 1 2 3 4
new player qorban 1 2 3 4
new player abbasi 1 2 3 4
new player alikmr 1 2 3 4
new player sadegh 1 2 3 4
new player hamide 1 2 3 4
new player karane 1 2 3 4
new player vanaki 1 2 3 4
new player Ars 1 100 100 100
new player sad 1 100 100 100
new player han 1 100 100 100
new player fat 1 100 100 100
new player qor 1 100 100 100
new player abb 1 100 100 100
new player ali 1 100 100 100
new player sad 1 100 100 100
new player ham 1 100 100 100
new player kar 1 100 100 100
new player van 1 100 100 100
new team t2 100
new team t1 100
buy 12 1
buy 13 1
buy 14 1
buy 15 1
buy 16 1
buy 17 1
buy 18 1
buy 19 1
buy 20 1
buy 21 1
buy 22 1
buy 1 2
buy 2 2
buy 3 2
buy 4 2
buy 5 2
buy 6 2
buy 7 2
buy 8 2
buy 9 2
buy 10 2
buy 11 2
match 1 2
rank
end
```
## خروجی نمونه ۱
```
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
player added to the team succesfully
1. t2
2. t1
```
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.