+ محدودیت زمان: ۲ ثانیه
+ محدودیت حافظه: ۲۵۶ مگابایت
---
*امین* و دوستانش چند سال است که مسابقات برنامهنویسی مختلفی بهصورت خصوصی برگزار میکنند. آنها در مسابقات خود، امتیازات شرکتکنندگان را روی کاغذ محاسبه میکنند و جدول امتیازات را نیز بهصورت دستی رسم میکنند! *امین* که بهتازگی با مسابقات کوئرا آشنا شده است، دریافته که جدول امتیازات مسابقات در کوئرا مشابه جدول امتیازاتی است که بهصورت دستی رسم میکنند. او از شما میخواهد برنامهای بنویسید که محاسبات مربوط به جدول امتیازات مسابقات را انجام دهد.
در کوئرا، هر فردی که حداقل یک کد در یک مسابقه ارسال کند، نامش در جدول امتیازات آن مسابقه نمایش داده میشود. هر کدی که ارسال میشود، یک زمان ارسال دارد که بهصورت نسبی از زمان شروع مسابقه محسوب میشود. هر فرد به ازای هر سؤال در مسابقه، حداکثر یک ارسال نهایی دارد که از بین کدهای ارسالشدهی فرد برای آن سؤال انتخاب میشود. بهصورت پیشفرض، کدی که بیشترین امتیاز را زودتر از سایر ارسالها دریافت کرده است بهعنوان ارسال نهایی در نظر گرفته میشود. البته شرکتکننده میتواند یک کد دلخواه را بهعنوان ارسال نهایی در نظر بگیرد.
نحوهی رتبهبندی شرکتکنندگان در جدول امتیازات بهصورت زیر است:
+ فردی که مجموع امتیازات ارسالهای نهاییاش بیشتر باشد، در رتبهی بالاتری قرار میگیرد.
+ اگر مجموع امتیازات ارسالهای نهایی دو نفر یکسان باشد، فردی که مجموع زمانهای ارسالهای نهایی غیر صفرش (ارسالهای نهاییای که امتیازشان صفر نیست) کمتر باشد در رتبهی بالاتری قرار میگیرد.
+ اگر مجموع امتیازات و مجموع زمانهای ارسالهای نهایی غیر صفر دو نفر یکسان باشد، فردی که شناسهی عددی کاربریاش کوچکتر باشد در رتبهی بالاتری قرار میگیرد.
عدد رتبهی افراد برخلاف جایگاه در جدول امتیازات، صرفاً براساس مجموع امتیازات ارسالهای نهایی مشخص میشود. برای مثال، اگر پنج نفر امتیاز ۱۰۰۰ را کسب کرده باشند و یک نفر امتیاز ۹۰۰، عدد رتبهی پنج نفر اول برابر با ۱ و عدد رتبهی نفر ششم برابر با ۶ خواهد بود.
طبق توضیحات فوق، دستورات زیر باید در برنامه پیادهسازی شوند:
## افزودن سؤال به مسابقه
```
add_problem contest_id problem_id
```
این دستور، سؤالی با شناسهی `problem_id` را به مسابقهای با شناسهی `contest_id` اضافه میکند. در صورتی که این سؤال از قبل در مسابقهی دیگری وجود داشت، سؤال نباید به مسابقه اضافه شود.
## ثبت اطلاعات کد ارسالی برای سؤال
```
add_submission submission_id user_id problem_id time score
```
این دستور، یک کد ارسالی جدید با شناسهی `submission_id` را برای سؤالی با شناسهی `problem_id` که توسط کاربری با شناسهی `user_id` در `time` ثانیه پس از شروع مسابقه ارسال شده و امتیاز `score` را کسب کرده است اضافه میکند. **تضمین میشود** که کد ارسالیای با شناسهی `submission_id` از قبل وجود ندارد. اگر سؤالی با شناسهی `problem_id` از قبل به مسابقهای اضافه نشده بود، نباید هیچ اتفاقی بیفتد.
**توجه:** اطلاعات کدهای ارسالی لزوماً بهترتیب صعودی برحسب زمان ارسال اضافه نمیشوند.
## تغییر ارسال نهایی
```
change_final_submission user_id problem_id submission_id
```
این دستور، ارسال نهایی سؤالی با شناسهی `problem_id` برای کاربری با شناسهی `user_id` را به کد ارسالیای با شناسهی `submission_id` تغییر میدهد. اگر حداقل یکی از شرایط زیر برقرار بود، هیچ افتقای نباید بیفتد:
+ کد ارسالیای با شناسهی `submission_id` موجود نباشد
+ کد ارسالی توسط کاربری با شناسهی `user_id` ارسال نشده باشد
+ کد ارسالی متعلق به سؤالی با شناسهی `problem_id` نباشد
## نمایش جدول امتیازات
```
get_scoreboard contest_id
```
این دستور، جدول امتیازات مسابقهای با شناسهی `contest_id` را نمایش میدهد. افراد باید بهترتیب نزولی جایگاه نمایش داده شوند. به ازای هر نفر، یک خط بهصورت زیر باید چاپ شود:
```
place_no user_id score_sum time_sum
```
در خط فوق:
+ `place_no` عدد رتبهی شرکتکننده است.
+ `user_id` شناسهی فرد است.
+ `score_sum` مجموع امتیاز ارسالهای نهایی فرد است.
+ `time_sum` مجموع زمان ارسالهای نهایی غیر صفر فرد است. اگر فرد ارسال نهایی غیر صفر نداشته باشد، این عدد نباید چاپ شود.
**توجه:** اگر مسابقهای با شناسهی `contest_id` موجود نباشد یا هیچ ارسالی برای سؤالات مسابقه صورت نگرفته باشد، نباید چیزی چاپ شود.
## خروج از برنامه
```
end
```
با اجرای این دستور، اجرای برنامه خاتمه مییابد.
# ورودی
ورودی شامل چندین خط است که در هر خط یکی از دستوراتی که گفته شد، وارد میشود.
همچنین در خط آخر ورودی، دستور `end` وارد میشود.
تعداد دستورات ورودی حداکثر ۵۰۰ تا است.
# خروجی
پس از اجرای دستورات، خروجی دستورات `get_scoreboard` را چاپ کنید.
# مثال
```
add_problem 1324 12
add_submission 651621 32 12 301 100
get_scoreboard 1324
end
```
## خروجی نمونه ۱
```
1 32 100 301
```
## ورودی نمونه ۲
```
add_problem 4984 984621
add_submission 6519 3265 984621 658 100
add_submission 98321 78135 984621 1000 100
get_scoreboard 4984
end
```
## خروجی نمونه ۲
```
1 3265 100 658
1 78135 100 1000
```
## ورودی نمونه ۳
```
add_problem 1 1
add_problem 1 2
add_problem 1 3
add_problem 1 3
add_problem 3 3
add_submission 1 4 1 1500 100
add_submission 2 4 1 658 100
add_submission 3 2 1 1000 100
add_submission 4 2 1 1001 100
add_submission 5 2 3 123 66
change_final_submission 2 1 4
add_submission 6 3 1 1500 100
add_submission 7 3 1 658 100
add_submission 8 10 1 900 0
get_scoreboard 1
end
```
## خروجی نمونه ۳
```
1 2 166 1124
2 3 100 658
2 4 100 658
4 10 0
```