لینکهای مفید برای شرکت در مسابقه:
در حین مسابقه، میتوانید سؤالات خود را از بخش «سؤال بپرسید» مطرح کنید.
امین و دوستانش چند سال است که مسابقات برنامهنویسی مختلفی بهصورت خصوصی برگزار میکنند. آنها در مسابقات خود، امتیازات شرکتکنندگان را روی کاغذ محاسبه میکنند و جدول امتیازات را نیز بهصورت دستی رسم میکنند! امین که بهتازگی با مسابقات کوئرا آشنا شده است، دریافته که جدول امتیازات مسابقات در کوئرا مشابه جدول امتیازاتی است که بهصورت دستی رسم میکنند. او از شما میخواهد برنامهای بنویسید که محاسبات مربوط به جدول امتیازات مسابقات را انجام دهد.
در کوئرا، هر فردی که حداقل یک کد در یک مسابقه ارسال کند، نامش در جدول امتیازات آن مسابقه نمایش داده میشود. هر کدی که ارسال میشود، یک زمان ارسال دارد که بهصورت نسبی از زمان شروع مسابقه محسوب میشود. هر فرد به ازای هر سؤال در مسابقه، حداکثر یک ارسال نهایی دارد که از بین کدهای ارسالشدهی فرد برای آن سؤال انتخاب میشود. بهصورت پیشفرض، کدی که بیشترین امتیاز را زودتر از سایر ارسالها دریافت کرده است بهعنوان ارسال نهایی در نظر گرفته میشود. البته شرکتکننده میتواند یک کد دلخواه را بهعنوان ارسال نهایی در نظر بگیرد.
نحوهی رتبهبندی شرکتکنندگان در جدول امتیازات بهصورت زیر است:
عدد رتبهی افراد برخلاف جایگاه در جدول امتیازات، صرفاً براساس مجموع امتیازات ارسالهای نهایی مشخص میشود. برای مثال، اگر پنج نفر امتیاز ۱۰۰۰ را کسب کرده باشند و یک نفر امتیاز ۹۰۰، عدد رتبهی پنج نفر اول برابر با ۱ و عدد رتبهی نفر ششم برابر با ۶ خواهد بود.
طبق توضیحات فوق، دستورات زیر باید در برنامه پیادهسازی شوند:
این دستور، سؤالی با شناسهی problem_id
را به مسابقهای با شناسهی contest_id
اضافه میکند. در صورتی که این سؤال از قبل در مسابقهی دیگری وجود داشت، سؤال نباید به مسابقه اضافه شود.
این دستور، یک کد ارسالی جدید با شناسهی submission_id
را برای سؤالی با شناسهی problem_id
که توسط کاربری با شناسهی user_id
در time
ثانیه پس از شروع مسابقه ارسال شده و امتیاز score
را کسب کرده است اضافه میکند. تضمین میشود که کد ارسالیای با شناسهی submission_id
از قبل وجود ندارد. اگر سؤالی با شناسهی problem_id
از قبل به مسابقهای اضافه نشده بود، نباید هیچ اتفاقی بیفتد.
توجه: اطلاعات کدهای ارسالی لزوماً بهترتیب صعودی برحسب زمان ارسال اضافه نمیشوند.
این دستور، ارسال نهایی سؤالی با شناسهی problem_id
برای کاربری با شناسهی user_id
را به کد ارسالیای با شناسهی submission_id
تغییر میدهد. اگر حداقل یکی از شرایط زیر برقرار بود، هیچ افتقای نباید بیفتد:
submission_id
موجود نباشدuser_id
ارسال نشده باشدproblem_id
نباشداین دستور، جدول امتیازات مسابقهای با شناسهی contest_id
را نمایش میدهد. افراد باید بهترتیب نزولی جایگاه نمایش داده شوند. به ازای هر نفر، یک خط بهصورت زیر باید چاپ شود:
در خط فوق:
place_no
عدد رتبهی شرکتکننده است.user_id
شناسهی فرد است.score_sum
مجموع امتیاز ارسالهای نهایی فرد است.time_sum
مجموع زمان ارسالهای نهایی غیر صفر فرد است. اگر فرد ارسال نهایی غیر صفر نداشته باشد، این عدد نباید چاپ شود.توجه: اگر مسابقهای با شناسهی contest_id
موجود نباشد یا هیچ ارسالی برای سؤالات مسابقه صورت نگرفته باشد، نباید چیزی چاپ شود.
با اجرای این دستور، اجرای برنامه خاتمه مییابد.
ورودی شامل چندین خط است که در هر خط یکی از دستوراتی که گفته شد، وارد میشود.
همچنین در خط آخر ورودی، دستور end
وارد میشود.
تعداد دستورات ورودی حداکثر ۵۰۰ تا است.
پس از اجرای دستورات، خروجی دستورات get_scoreboard
را چاپ کنید.