المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۱۲:عملی:سوال ۱۰

عرب پول دوست داشت

در سفر حج بعضی‌ها می‌آیند تجارت بین‌المللی! یعنی این‌که توی مکه و مدینه (بعضا در جده رویت شده!) کلی خرید می‌کنند. از مسئله‌ی بستن چمدان‌ها و بار زدن آن‌ها به ماشین برا که بگذریم، موقع برگشت توی اتوبوس همه می‌فهمن که اگر بار کسی بیش‌تر از ۳۰ کیلوگرم باشد، به ازای هر کیلوگرم اضافه‌بار ۲۱ ریال سعودی جریمه می‌شود. جهت مزید اطلاع عرض می‌کنم با ۲۱ ریال می‌شود ۱۰.۵ تا بستنی $Twix$ خورد! ولی بلافاصله این نکته هم گفته می‌شود که اگر مثلا $k$‌ نفر با هم چمدانشان را به قسمت بار تحویل دهند، کافیست مجموع وزن چمدانشان از $30\times k$ کم‌تر باشد و کلا به ازای هر کیلوگرم اضافه بار مبلغ ۲۱ ریال جریمه می‌شوند.

اینجاست که یک تجارت شروع می‌شود! اونایی که چمدون‌هایشان کم‌تر از ۳۰ کیلوگرم وزن دارد هر کدام یک قیمتی مشخص می‌کنند برای این‌که چمدانشان با چمدان یک نفر که بیش‌تر از حد مجاز چمدانش سنگینه بدهند.(مثلا یک‌نفر با چمدان ۶۰ کیلویی به دو نفر که هر کدام چمدان ۱۲ کیلویی دارند پول می‌دهد که با هم بروند. آن‌وقت دیگر لازم نیست جریمه‌ی اضافه‌بار پرداخت کند. یا مثلا اگر یک‌نفر که چمدان ۴۵ کیلویی دارد به یک‌نفر که چمدان ۱۷ کیلویی دارد پول بدهد که با هم بروند، آن‌‌گاه به جای $15 \times 21$ریال، $2\times 21$ ریال جریمه می‌شود)

فرض کنید از هر چند نفر که با هم چمدانشان را تحویل می‌دهند حداکثر چمدان یکی از آن‌ها بیش‌تر از ۳۰ کیلو وزن دارد و اگر مجموع وزن چمدان‌ها از تعداد نفرات ضرب در ۳۰ بیش‌تر شد، کسی که سنگین‌ترین چمدان را دارد اضافه‌بار را پرداخت می‌کند.

کار شما این است که مشخص کنید هر کسی که اضافه‌بار دارد، با چه افرادی چمدانشان را بدهد تا کم‌ترین پول را پرداخت کند.

افرادی که اضافه‌بار دارند به یک ترتیبی پیش شما می‌آیند. شما باید برای هر فرد مشخص کنید با چه کسانی( از بین آن‌هایی که هنوز مشخص نشده با چه کسی می‌روند) برود تا کم‌ترین پول را پرداخت کند.

ورودی

در خط اول فایل ورودی عدد $n$‌نوشته شده است. در $n$‌ سطر بعد در هر سطر به ترتیب اسم و وزن چمدان یک نفر نوشته شده است. اگر وزن چمدان از ۳۰ کیلوگرم کم‌تر بود پولی که بابت همراه کسی بار تحویل دادن گرفته می‌شود، نوشته شده است. اسم هر فرد فقط از حروف کوچک و بزرگ الفبای انگلیسی است و اسم هر نفر حداکثر ۲۰ حرف است. وزن چمدان‌‌ها با دقیقا یک رقم اعشار داه شده است. پولی که هر فرد می‌گیرد عددی صحیح و غیر منفی است. اسم هیچ دو نفری مثل هم نیست!

از سطر $n+2$ام به بعد، اسم افردی که چمدان‌های سنگین‌تر از ۳۰ کیلوگرم داشتن، به ترتیبی که پیش شما می‌آیند نوشته شده است.(وزن هر چمدان از ۱۰۰ کیلوگرم سبک‌تر است و $n\leq 140$)

خروجی

فایل خروجی دقیقا $n$‌ خط دارد و باید اطلاعات مربوط به افراد، به همان ترتیبی که اسمشان در اول فایل ورودی آمده، نوشته بشود. ابتدا پولی که باید فرد بپردازد را بنویسید.( اگر وزن چمدان فرد کم‌تر از ۳۰ کیلوگرم اس در این‌جا ۰ بنویسید) سپس ابتدا تعداد نفراتی که این فرد با آن‌ها می‌رود را بنویسید. بعد هم اسم آن افراد را بنویسید.

محدودیت‌ها

  • محدودیت زمان: ۷ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

ورودی و خروجی نمونه

ورودی نمونه خروجی نمونه
7
Ali 15.0 60
MohammadHossein 23.0 7
Kassra 17.0 40
Hamid 24.0 50
Hadee 21.7 13
Mehran 39.7
Haaji 30.2
Mehran
Haaji
0 1 Ali
0 3 MohammadHossein Mehran Hadee
0 1 Kassra
0 1 Hamid
0 3 Mehran Hadee MohammadHossein
20 3 Hadee Mehran MohammadHossein
4.2 1 Haaji

ابزار صفحه