تیمور پسری کمحافظه و عاشق برنامهنویسی است.
چون حافظهی بلندمدت او ضعیف است، هر سال فراموش میکند که مسابقات کدکاپ شروع شده است و به همین دلیل از شرکت در این مسابقات بازمیماند.
بنابراین تصمیم میگیرد رباتی را بهگونهای برنامهریزی کند که هر سال، قبل از شروع هر سری از مسابقات کدکاپ، آغاز آن دوره از رقابتها را به او اعلام کند.
چون تیمور حافظهی ضعیفی دارد، فراموش کرده است که چگونه باید کُد بزند :/. پس وظیفهی شما این است که برنامهی این ربات را بهگونهای بنویسید که با گرفتن یک عدد ، که نشاندهندهی اُمین دوره از مسابقات کدکاپ است، شروع آن دوره را اعلام کند.
در تنها خط ورودی، عدد طبیعی آمده است.
در تنها خط خروجی، باید عبارت Hello CodeCup n!
را چاپ کنید که برابر با همان سال برگزاری مسابقات است.
تیمور پس از حل سوال اول مسابقهی کدکاپ، حس غرور کرد. اما ناگهان خود را در اتاق فرار کدکاپ یافت. در این اتاق تنها یک قفل وجود داد که باید باز شود تا تیمور بتواند فرار کرده و بقیهی سوالها را ببیند. از آنجایی که این اتاق پر از روح است، تیمور از شدت ترس تمرکز خود را از دست داده و نمیتواند قفل را باز کند و از شما درخواست دارد تا به او کمک کنید بتواند با باز کردن قفل از این اتاق فرار کند.
قفل این اتاق از دو دیسک دایرهای که هرکدام شامل ۵ عدد هستند، تشکیل شده است. این دو قفل در دو سطر و روی هم قرار گرفتهاند. فرض کنید اعداد نوشته شده روی دیسک بالا به ترتیب از راست به چپ ، ، ، و و اعداد نوشته شده روی دیسک پایین به ترتیب از راست به چپ ، ، ، و باشند.
برای مثال فرض کنید اعداد نوشته شده روی دیسکهای قفل به صورت زیر باشند:
در هر عملیات میتوان هر یک از این دو دیسک را به هر دو جهت چپ یا راست و به اندازهی دلخواه چرخش داد. به عبارت دیگر هر کدام از این دو دنباله را میتواند به هر تعداد و در هر جهت چپ و راست شیفت داد.
برای مثال اگر دیسک بالا را دو واحد به چپ و دیسک پایین را یک واحد به راست بچرخانیم وضعیت قفل به صورت زیر تبدیل میشود.
باز شدن قفل از قاعدهی جمع رقمی پیروی میکند. بدین صورت که از هر دو دیسک، فقط سه رقم وسط در نتیجه تاثیر دارند. قفل به صورت خودکار هر یک از این سه رقم از دیسک بالا () را با رقم متناظرش در دیسک دوم () به صورت رقمی جمع میکند.
جمع رقمی یعنی فقط یکان حاصل جمع در نظر گرفته میشود. در نهایت، یک عدد سه رقمی تولید میشود. (ممکن است این عدد با ۰ شروع شود.) اگر این عدد سه رقمی به عدد ۶ بخشپذیر بود، درب باز میشود. حال وظیفهی شما این است که با چرخش دادن هر یک از این دو قفل، کاری کنید که درب باز شود یا اعلام کنید که چنین کاری غیرممکن است.
ورودی تنها شامل دو سطر است در سطر اول ورودی ۵ رقم اولیه نوشته شده روی دیسک بالا و در سطر دوم ۵ رقم اولیه نوشته شده روی دیسک دوم را نشان میدهد.
همچنین در این رقمها هر یک از ارقام ۰ تا ۹ دقیقاَ یک بار آمدهاند.
در صورتی که میتوان قفل را باز کرد، با چاپ عبارت Boro joloo :)
به تیمور اعلام کنید که شما در حال باز کردن درب هستید تا او به سمت درب خروجی راه بیوفتد. در غیر این صورت با چاپ عبارت Gir oftadi :(
به او اعلام کنید که تا ابد در این اتاق گیر افتاده است. به خروجیهای نمونه دقت کنید.
پاسخ این نمونه در صورت سوال توضیح داده شده است.
پس از فشارهای زیادی که در اتاق فرار به تیمور وارد شده بود. تیمور قصد دارد که طی یک عملیات ضربتی دنیا را متحول کند و ماشین حساب مورد علاقه خود را بسازد و آن را به جهانیان معرفی کند.
میدانیم که تیمور بسیار شخص قانوندوست و باعدالتی است. از آنجایی که قصد دارد ماشین حساب مورد علاقه خود را بسازد، پس باید قوانین خاص خود را داشته باشد تا تبدیل به یک ماشین حساب خاص برای معرفی به جهانیان شود. به همین علت قوانین ماشین حساب تیمور بدین صورت وضع شدند:
اگر تعداد اعداد مثبت و منفی باهم برابر بود، تیمور نیز به علت برقرار بودن عدالت بین تعداد اعداد مثبت و منفی، عدالت را نیز بین خود اعداد برقرار میکند. بدین صورت که همواره بزرگترین عدد صحیح مثبت در کنار بزرگترین عدد صحیح منفی و دومین عدد بزرگ صحیح مثبت در کنار دومین عدد بزرگ صحیح منفی و... تا تمام اعداد در کنار عدد همسطح خود قرار گیرند .
اگر تعداد اعداد مثبت از اعداد منفی بیشتر بود به علت اینکه تیمور فرد عدالتمحوری است تا جایی که بتواند عدالت را بین اعداد مثبت و منفی، همانند قانون اول رعایت میکند. اما اعدادی که از این قانون پیروی نمیکنند را در کنار هم میگذارد و آن ها را اعداد بدون عدالت میخواند.و اگر بزرگترین عددِ اعداد بدون عدالت از حاصل اعداد دارای عدالت بیشتر بود، منفی شده تا عدالت بیشتری برقرار شود در غیر این صورت هویت خود را حفظ میکند و در گروه اعداد بدون عدالت میماند. سپس اعدادی که بدون عدالت هستند، به ترتیب از بزرگ به کوچک در کنار اعداد دارای عدالت ظاهر میشوند. در آخر تیمور تاکید میکند که تنها یک بار میتوان از این قانون استفاده کرد. (برای درک بهتر این قانون توضیحات نمونه ورودی ۲ را بخوانید)
اگر تعداد اعداد منفی از اعداد مثبت بیشتر بود به علت اینکه تیمور فرد عدالتمحوری است تا جایی که بتواند عدالت را بین اعداد مثبت و منفی، همانند قانون اول رعایت میکند. اما اعدادی که از این قانون پیروی نمیکنند را در کنار هم میگذارد و آن ها را اعداد بدون عدالت میخواند و اگر حاصل اعداد دارای عدالت، منفی بود، کوچکترین عددِ اعداد بدون عدالت، مثبت شده تا عدالت بیشتری برقرار شود در غیر این صورت هویت خود را حفظ میکند و در گروه اعداد بدون عدالت باقی میماند. سپس اعدادی که بدون عدالت هستند، به ترتیب از بزرگ به کوچک در کنار اعداد دارای عدالت ظاهر میشوند. در آخر تیمور تاکید میکند که تنها یک بار میتوان از این قانون استفاده کرد. (برای درک بهتر این قانون توضیحات نمونه ورودی ۳ را بخوانید)
تیمور آخرین قانون را این گونه بیان کرد که اگر قبل از عدد ۰ علامت +
بیاید آن را جزو گروه اعداد مثبت و اگر علامت -
بیاید آن را باید جزو گروه اعداد منفی دانست.
همانطور که میدانید تیمور فشار زیادی را در اتاق فرار متحمل شده بود، به او در ساخت این ماشین حساب کمک کنید تا فشار کمتری وارد شود.
ورودی تنها شامل یک خط است که در آن ، عملیات ریاضی تیمور برای ماشین حساب ، به طول حداکثر ۱۰۰۰ آمده است. همچنین تضمین میشود که عملیات ریاضی وارد شده، حتما از یکی از قوانین پیروی میکند و هر کدام از اعدادِ عملیات از کوچکتر است و حاصل کل عبارت هیجگاه از مثبت بزرگتر و از منفی کوچکتر نخواهد شد.
در تنها خط خروجی باید عملیات را به گونهای تغییر دهید تا ماشینحساب بتواند آن را بر اساس قوانین خودساخته تیمور تحلیل کند و حاصل آن را حساب کند.
توجه : اگر حاصل عبارت مثبت یا صفر بود آن را بدون هیچ علامتی نمایش میدهیم.
با توجه به اینکه تعداد اعداد مثبت از اعداد منفی بیشتر است، باید از قانون دوم استفاده کرد. از آنجایی که ابتدا قانون اول اجرا میشود، حاصل این قانون برابر ۱۰ خواهد بود، که از بزرگترین عددِ اعداد بدون عدالت بیشتر است. پس عددی دستخوش تغییر نمیشود و تمام اعدادِ بدون عدالت، هویت خود را حفظ میکنند.
با توجه به اینکه تعداد اعداد منفی از اعداد مثبت بیشتر است، باید از قانون سوم استفاده کرد. از آنجایی که ابتدا قانون اول اجرا میشود، حاصل این قانون برابر ۱۱- خواهد بود. پس کوچکترین عددِ اعداد بدون عدالت، دستخوش تغییر میشود و دیگر اعدادِ بدون عدالت، هویت خود را حفظ میکنند.
تیمور که عاشق برق و برنامهنویسی بود، تصمیم گرفت که سیستم کنترل برق یک فروشگاه را به دست بگیرد. مدیر فروشگاه که هنوز به تیمور اطمینان نداشت، به او مسئولیتی سپرد تا او را بسنجد! او به تیمور مسئولیت محاسبهی قیمت برق لامپهای فروشگاه را داد.
فروشگاه دارای لامپ است که از ۱ تا شمارهگذاری شدهاند. لامپهای این فروشگاه شامل دو نوع سنسوری و کلیدی هستند:
علاوه بر ویژگیهای گفته شده، هر لامپ یک مقدار دارد که نشاندهندهی توان آن است. لامپ اُم به ازای هر یک ثانیهای که روشن باشد، واحد انرژی مصرف میکند.
نحوهی محاسبهی هزینهی برق برای لامپها نیز به صورت پلهای است. به طور دقیقتر، قیمت برق دارای پله است و پلهی اُم، دارای دو ویژگی و است که به ترتیب، نشاندهندهی حداکثر میزان انرژیای که در این پله قرار میگیرد و قیمت هر واحد انرژی مربوط به آن پله است.
برای محاسبهی قیمت برق در یک ماه، تیمور ابتدا باید محاسبه کند که کل لامپها در کنار هم، چه مقدار انرژی مصرف کردهاند (این مقدار را در نظر میگیریم). سپس کوچکترین پلهی ای را پیدا میکند که آن، از مقدار مصرفی کل ماه، کمتر نباشد (). پس از آن مقدار هر واحد انرژی در آن ماه را به دست میآورد که برابر با میشود. در نتیجه قیمت کل انرژی مصرفی در آن ماه برابر با خواهد بود.
تیمور که خوب متوجه سیستم محاسبهی قیمت شده بود، زود دست به کار شد و از مدیر فروشگاه، لیست گزارش روشن و خاموش شدن لامپها را گرفت و برای اثبات کردن توانایی خود، تصمیم گرفت که با استفاده از آن، هزینهی برق را برای ماه گذشته محاسبه کند.
فرض میکنیم در ابتدا، همهی لامپها خاموش هستند.
در خط اول ورودی عدد آمده است که نشاندهندهی تعداد لامپها است. در خط اُم از خط بعدی، توضیح لامپ اُم آمده است. قالب توضیح هر لامپ نیز به صورت زیر خواهد بود:
قالب ورودی لامپها به یکی از شکلهای زیر است:
خط اول نشاندهندهی یک لامپ از نوع کلیدی با توان است و خط دوم نیز نشاندهندهی یک لامپ سنسوری با توان و مهلت است.
در خط بعدی، عدد آمده است که نشاندهندهی تعداد پلههای قیمت برق است. در خط اُم از خط بعدی نیز به ترتیب دو مقدار و آمده است که نشاندهندهی حداکثر میزان انرژی پلهی اُم و قیمت هر واحد انرژی در آن پله است.
تضمین میشود مقدار ها و ها به صورت صعودی در ورودی میآیند و همچنین مقدار آخرین حداقل به اندازهی مجموع کل انرژی مصرفی است.
در خط بعدی عدد داده شده است که نشاندهندهی تعداد گزارشها است و در هر یک از خط بعدی نیز یک گزارش آمده است. قالب هر گزارش نیز به صورت زیر خواهد بود:
قالب ورودی هر گزارش به صورت زیر است:
که در آن LAMP_ID
نشاندهندهی شمارهی لامپی است که گزارش به آن تعلق دارد و TIME
هم نشاندهندهی زمانی است که آن تغییر رخ داده است. هر گزارش مربوط به یک لامپ است و در صورتی که لامپ مورد نظر از نوع سنسوری باشد، این گزارش بدان معناست که یک سیگنال برای این سنسور فرستاده شده است و اگر از نوع کلیدی باشد، یعنی وضعیت کلید آن لامپ تغییر کرده است (اگر لامپ روشن باشد، خاموش میشود و برعکس).
قالب TIME
ها نیز تضمین میشود به شکل زیر خواهد بود:
که در آن DD
و hh
و mm
و ss
به ترتیب نشاندهندهی روز و ساعت و دقیقه و ثانیهی رخ دادن آن رخداد است.
در صورتی که لامپی تا لحظهی 31 23:59:59
روشن بود، فرض میکنیم در این لحظه خاموش میشود. همچنین فرض میکنیم ماهی که در آن هستیم ۳۱ روزه است و آخرین لحظهی آن، لحظهی 31 23:59:59
است.
تضمین میشود گزارشها به ترتیب TIME
شان در ورودی میآیند.
خروجی برنامهی شما باید شامل یک خط باشد که مقدار هزینهی برق در آن ماه را نشان میدهد.
زیرمسئله | نمره | محدودیت |
---|---|---|
۱ | ۸۱ | لامپها فقط از نوع کلیدی هستند |
۲ | ۱۳۵ | لامپها فقط از نوع سنسوری هستند |
۳ | ۵۴ | بدون محدودیت اضافی |
تیمور عاشق بازی کانتر و شبانه روز مشغول بازی است! برای همین میخواهد حالت خاصی از بازی کانتر (Counter-Strike) را پیاده سازی کند. برای آخرین بار به تیمور کمک کنید تا از این چالش هم عبور کند.
بازی کانتر یک بازی تفنگی اول شخص است، در این بازی ۲ تیم با حداکثر ۱۰ نفر وجود دارد. یک تیم «تروریست» (Terrorist) و یک تیم «ضدتروریست»(Counter-Terrorist) است. بازی «دست» دارد و در هر دست این دو تیم به سمت هم تیراندازی میکنند و میخواهند یکدیگر را نابود کنند. مدت هر «دست» از بازی ۰۲:۱۵:۰۰۰ (۲ دقیقه و ۱۵ ثانیه) است. اگر هیچ کدام از اعضای یک تیم در لحظه پایان یک دست زنده نباشد بازنده است. اگر مدت بازی تمام شود و از هر دو تیم بازیکنی زنده مانده باشد تیم «ضدتروریست» برنده این دست میشود. اگر در یک دست هیچ بازیکنی زنده نباشد (یا حتی هیچ بازیکنی وارد بازی نشده باشد!) تیم ضدتروریست برنده است.
هر بازیکن میتواند حداکثر یک اسلحه از دسته «سنگین» و حداکثر یک اسلحه از دسته «کمری» بخرد، همچنین هر بازیکن به صورت پیشفرض یک «چاقو» دارد. خرید اسلحه فقط در ۴۵ ثانیه اول بازی ممکن است. به عبارت دیگر خریدهای بعد از لحظه 00:45:00
(شامل این لحظه) انجام نمیشود.
اسم | قیمت | میزان کاهش جان | مقدار پول کشتن |
---|---|---|---|
AK | 2700 | 31 | 100 |
AWP | 4300 | 110 | 50 |
اسم | قیمت | میزان کاهش جان | مقدار پول کشتن |
---|---|---|---|
Revolver | 600 | 51 | 150 |
Glock-18 | 300 | 11 | 200 |
این سلاح را همه دارند و قابل خریدن نیست، هر بار استفاده از آن باعث کاهش ۴۳ واحدی از جان بازیکن حریف میشود و اگر بازیکنی با این اسلحه کشته شود ۵۰۰ دلار به بازیکنی که ضربه را زده بلافاصله پول داده میشود.
اسم | قیمت | میزان کاهش جان | مقدار پول کشتن |
---|---|---|---|
M4A1 | 2700 | 29 | 100 |
AWP | 4300 | 110 | 50 |
اسم | قیمت | میزان کاهش جان | مقدار پول کشتن |
---|---|---|---|
Desert-Eagle | 600 | 53 | 175 |
UPS-S | 300 | 13 | 225 |
این سلاح را همه دارند و قابل خریدن نیست، هر بار استفاده از آن باعث کاهش ۴۳ واحدی از جان بازیکن حریف میشود و اگر بازیکنی با این اسلحه کشته شود ۵۰۰ دلار به بازیکنی که ضربه را زده بلافاصله پول داده میشود.
در ابتدای هر دست، هر کدام از بازیکنان ۱۰۰ واحد جان (health) دارند. (حتی اگر در دست قبل کشته شده باشند دوباره زنده میشوند.) در زمان بازی هر کدام از بازیکنان میتوانند به سمت هم شلیک کنند، در اثر هر شلیک بسته به تفنگی که با آن شلیک شده مقداری از جان بازیکنی که به آن شلیک شده، کاهش پیدا میکند. اگر جان کسی به ۰ برسد میمیرد و از بازی خارج میشود و دیگر توانایی انجام هیچ کاری ندارد. اگر یک بازیکن به هم تیمی خودش شلیک کند چیزی از جان آن کم نمیشود. هر بازیکن پس از کشتن هر بازیکن از تیم حریف، بسته به نوع سلاحش مقداری «پول» کسب میکند. کسی امتیاز کشتن را میگیرد که جان آن بازیکن را برای اولین بار به ۰ برساند. توجه کنید جان هیچ کسی منفی نمیشود. یعنی اگر میزان کاهش جان یک شلیک، بیشتر از مقدار فعلی جان بازیکن مورد هدف باشد، مقدار جان آن بازیکن ۰ میشود.
بازیکنها برای خریدن اسلحهها به پول (money) نیاز دارند. بلافاصله بعد از اضافه شدن هر بازیکن به بازی ۱۰۰۰ دلار به آن بازیکن داده میشود. (ممکن است بازیکنی وسط یک دست به بازی اضافه شود.) بعد از پایان هر دست از بازی به هر کدام از بازیکنان تیم برنده ۲۷۰۰ دلار و به هر کدام از بازیکن تیم بازنده ۲۴۰۰ دلار داده میشود. همچنین حداکثر مقدار پول یک بازیکن ۱۰,۰۰۰ دلار است. یعنی اگر مقدار پولی که به یک بازیکن اضافه میشود، باعث شود که پولهای آن بیشتر از ۱۰,۰۰۰ دلار شود، مقدار پول بازیکن را همان ۱۰,۰۰۰ دلار در نظر میگیریم.
برای نشان دادن اتفاقات بازی در انتهای هر اتفاق یک برچسب زمان که به صورت یک رشته است چاپ میکنیم. فرمت این رشته به صورت mm:ss:ttt
است که زمان را در دقیقه mm
، ثانیه ss
و ttt
میلی ثانیه نشان میدهد. مثلاً 01:48:932
یعنی این اتفاق ۱ دقیقه و ۴۸ ثانیه و ۹۳۲ میلیثانیه بعد از شروع این دست از بازی است. تضمین میشود زمانهای هر دست طوری داده میشود که هیچ دو اتفاقی همزمان رخ ندهد. همچنین هیچوقت در لحظه شروع و پایان دست هیچ اتفاقی نمیافتد. در واقع همه زمانهای اتفاقات بین 00:00:001
و 02:14:999
است. تضمین میشود تمام اتفاقات به ترتیب زمان صعودی است.
زمانهایی که در انتهای گزارش یک اتفاق است از زمان شروع آن دست است در نظرگرفته میشود نه زمان شروع اولین دست بازی. وقتی یک بازیکن بعد از ثانیه 00:03:00
(شامل این لحظه) در یک دست وارد بازی میشود به صورت مرده وارد میشود (اما این مردن جزو تعداد دفعات کشته شدن به حساب نمیآید.) یعنی جان این بازیکن ۰ و پول آن ۱۰۰۰ است و از دست بعدی میتواند فعالیت خود را شروع کند. توجه کنید حتی بازیکنی که از اواسط بازی وارد میشود پولی که بابت بردن یا باختن آن دست بدست میآورد را دریافت میکند. بازیکنان پولهای بدست آورده خود را از یک دست به دست بعدی منتقل میکنند. همه بازیکنها در شروع یک دست جان ۱۰۰ خواهند داشت. مستقل از اینکه در دست قبلی زنده ماندهاند یا کشته شده باشند. بازیکنان زنده اسلحههای خریداری شده خود را از یک دست به دست بعدی میبرند اما بازیکنان مرده اسلحههای خود (به جز چاقو) را در دست بعدی از دست میدهند.
از شما میخواهیم برنامهای بنویسید که با دریافت اطلاعات اتفاقات مختلف بازی، وضعیت بازی و امتیاز بازیکنها را مشخص کند.
بعد از تمام شدن هر دست نام تیم برنده را چاپ کنید. یعنی اگر تیم تروریست برنده این دست است کلمه Terrorist won
و اگر تیم ضدتروریست برنده این دست است کلمه Counter-Terrorist won
را چاپ کنید.
مواردی که داخل <>
قرار داردند یعنی مقدار مناسبی به جای آنها قرار خواهد گرفت.
مواردی که داخل []
با \
جدا میشوند یعنی دقیقاً یکی از این موارد در ورودی میآید.
منظور از سایر موارد همان کلمات با همان کاراکترها است.
<username>
و <gun_name>
: همواره یک رشته به طول حداقل ۱ حداکثر ۲۰ از کاراکتر شامل حروف کوچک و بزرگ انگلیسی ارقام و یا _
و -
است.
<time>
: فرمت این رشته به صورت mm:ss:ttt
است که زمان را در دقیقه mm
، ثانیه ss
و ttt
میلی ثانیه نشان میدهد.
توجه کنید سیستم داوری به کوچک و بزرگ بودن حروف حساس است.
پیاده سازی دستورات این بخش ۲۰ درصد نمره سوال را دریافت خواهید کرد.
ADD-USER
در این درخواست شخصی با نام <username>
در لحظه <time>
به یکی از تیمهای تروریست یا ضدتروریست ملحق میشود.
همواره بعد از <username>
دقیقاً یکی از رشتههای Terrorist
(تروریست) یا Counter-Terrorist
(ضدتروریست) میآید که به ترتیب نشاندهنده تیمای است که این بازیکن به آن ملحق میشود.
در صورتی که مشکلات زیر وجود داشته به ترتیب باید دقیقاً یکی از خطاهای زیر را چاپ کنید. اگر چند مورد باهم به وجود آمد موردی که شماره کمتری دارد باید انجام شود.
you are already in this game
را چاپ کنید. this team is full
را چاپ کنید.this user added to [Terrorist/Counter-Terrorist]
را چاپ کنید و در جای رشته آخر نام تیم را قرار دهید. مثال ورودی از این دستور:
GET-MONEY
در این دستور از شما میخواهیم مقدار پول بازیکن <username>
را در لحظه <time>
چاپ کنید.
اگر بازیکنی با نام کاربری <username>
در این لحظه در بازی وجود ندارد پیام invalid username
را چاپ کنید.
مثال ورودی از این دستور:
GET-HEALTH
در این دستور از شما میخواهیم مقدار جان بازیکن <username>
را در لحظه <time>
چاپ کنید.
اگر بازیکنی با نام کاربری <username>
در این لحظه در بازی وجود ندارد پیام invalid username
را چاپ کنید. توجه کنید اگر این بازیکن مرده باشد مقدار جان آن ۰ است.
مثال ورودی از این دستور:
پیاده سازی دستورات این بخش ۶۰ درصد نمره سوال را دریافت خواهید کرد.
TAP
در این دستور اعلام میکنیم بازیکنی با نام کاربری <attacker>
به بازیکنی با نام کاربری <attacked>
با اسلحه heavy
یا pistol
یا knife
خود در لحظه <time>
ضربه میزند.
<attacker>
یا <attacked>
در این لحظه در بازی وجود ندارند پیام invalid username
را چاپ کنید.<attacker>
قبل از این لحظه کشته شده است، پیام attacker is dead
را چاپ کنید.<attacked>
قبل از این لحظه (نه بخاطر این شلیک) کشته شده است، پیام attacked is dead
را چاپ کنید.<attacker>
اسلحهای با این نوع ندارد، پیام no such gun
را چاپ کنید.<attacker>
و <attacked>
هر دو یک تیم هستند پیام friendly fire
را چاپ کنید. در غیر اینصورت شلیک را ثبت کنید و پیام nice shot
را چاپ کنید.
مثال ورودی از این دستور:
BUY
در این دستور بازیکن <username>
درخواست خریدن تفنگ <gun_name>
را در لحظه <time>
دارد.
<username>
در بازی وجود ندارد پیام invalid username
را چاپ کنید.<username>
زنده نیست پیام deads can not buy
را چاپ کنید.<time>
بعدز از لحظه 00:45:00
(شامل این لحظه) این دستور آمده است پیام you are out of time
را چاپ کنید.<gun_name>
در لیست اسلحههای مجاز تیم خرید کننده نیست پیام invalid category gun
را چاپ کنید.heavy
و کمری pistol
) قبلاً توسط این بازیکن خریداری شده است پیام you have a [heavy/pistol]
را چاپ کنید.no enough money
را چاپ کنید.در صورتی که هیچکدام از اتفاقات فوق نیفتید پیام I hope you can use it
را چاپ کنید و اسلحه را برای این بازیکن ثبت کنید.
مثال ورودی از این دستور:
پیاده سازی دستورات این بخش ۲۰ درصد نمره سوال را دریافت خواهید کرد.
SCORE-BOARD
در این دستور از شما میخواهیم لیست بازیکنهای تیم ضدتروریست و تروریست را چاپ کنید.
برای هر بازیکن مشخصات آن بازیکن را در یک سطر چاپ میکنیم:
که <username>
نامکاربری بازیکن، <kills>
تعداد بازیکنهایی است که در تمام دستهای بازی قبل از لحظه <time>
(شامل همین دست) توسط این بازیکن کشتهشده است. <killed>
تعداد دفعاتی است که این بازیکن در تمام دستها تا قبل از لحظه <time>
(شامل همین دست) توسط بازیکن دیگری کشتهشده است. <rank>
نشان دهنده شماره بازیکن است. یعنی برای بازیکنی که مشخصات آن دفعه اول چاپ میشود عدد ۱، بازیکن دوم عدد ۲ و ... . این شمارهگذاریها برای هر تیم جداست.
مشخصات بازیکنی زودتر چاپ میشود که تعداد <kills>
آن بیشتر باشد، اگر دو بازیکن تعداد <kills>
برابری داشته باشند مشخصات بازیکنی زودتر چاپ میشود که تعداد <killed>
کمتری دارد. اگر دو بازیکن در هر دوی این اعداد برابر بودند بازیکنی زودتر چاپ میشود که زودتر وارد بازی شده باشد.
برای چاپ کردن جدول امتیازات ابتدا عبارت :Counter-Terrorist-Players
را در یک خط چاپ کنید که نشاندهنده این است که میخواهیم بایکنان این تیم را بنویسیم. سپس مشخصات هر کدام از بازیکنان تیم ضدتروریست را مطابق توضیحات فوق در یک سطر چاپ میکنیم. سپس عبارت :Terrorist-Players
را در سطر بعدی چاپ میکنیم و در سطرهای بعدی مشخصات بازیکنان تیم ضدتروریست را چاپ میکنیم.
در سطر اول ورودی عدد صحیح و مثبت آمده است. که نشاندهنده تعداد دستهایی است که در این ورودی آمده است.
برای نشان دادن شروع هر دست در یک سطر کلمه ROUND
میآید. سپس با یک فاصله عدد صحیح و نامنفی میآید که نشاندهنده تعداد دستوراتی است که در این دست اتفاق افتاده است. (توجه کنید مقدار میتواند برابر ۰ باشد اما حداقل یک دستور در کل بازی داریم.)
تضمین میشود تعداد دستورهای ورودی از ۲۰۰۰ بیشتر نخواهد شد.
برای بهتر متوجه شدن ورودیها به مثالهای نمونه توجه کنید.
باید به ازای هر دستور آمده در ورودی خروجی متناظر آن را در یک سطر مجزا چاپ کنید. بعد از پایان هر دست برنده آن دست را چاپ کنید.
یعنی اگر تیم تروریست برنده این دست است عبارت Terrorist won
و در صورتی که تیم ضدتروریست برنده این دست است عبارت Counter-Terrorist won
را در یک سطر مجزا چاپ کنید.