BitTorrent
بیت تورنت پروتکلی برای تبادل فایلهای حجیم در شبکههای نظیر به نظیر میباشد که هر نود هم به عنوان سرور و هم کلاینت عمل میکند، بر خلاف معماری سرور-کلاینت که تمامی کلاینتها تقاضاهای خود را بهیک سرور مرکزی ارسال میکنند. در واقع این پروتکل اجازه میدهد کهیک گروه از کاربران بتوانند به صورت همزمان با یکدیگر دریافت و ارسال فایل داشته باشند. به طور دقیقتر بستهای از فایلها (که تورنت نامیده میشود) به تکههایی قسمتبندی میشوند.(مطابق شکل) برای مثال یک بسته $ 10 MB $ ممکن است به $ 10 $ بسته $ 1 MB $ و یا $ 40 $ بسته $ 256 KB $ شکسته شود. هر زمان کهیک نود (کلاینت) یک قسمت از یک فایل را دریافت میکند به منبعی برای توزیع آن قسمت از فایل در شبکه تبدیل میشود. این قسمتها در اکثر موارد به صورت غیر متوالی دانلود شدهاند و لازم است مرتب شوند تا فایل اصلی را بسازند. هر نود به صورت مستقل قسمتهایی را که باید دانلود کند را مدیریت میکند. تمامی قسمتها به جز قسمت آخر دارای سایز یکسانی هستند، قسمت آخر میتواند سایز کمتری داشته باشد.
شما میخواهید یک بسته از فایلها را دانلود کنید ولی در این ماه محدودیت مصرف اینترنت دارید. با این حال نمیخواهید تا ماه آینده صبر نمایید. هدف شما دانلود بیشترین تعداد فایل با پهنای باند باقیمانده اینترنت در این ماه است. کدام قسمتها باید دانلود شود؟
ورودی
- ورودی شامل سناریوهای مختلفی است. در خط اول هر سناریو $ 3 $عدد داده شده است، اولی $ N (1 \leq N \leq 1000) $ تعداد فایلها در هر تورنت است، دومی $ P (1 \leq P \leq 1000) $ اندازه هر قسمت به $ KB $ است و سومی نیز $ L (1 \leq L \leq 10^{6}) $ حجم باقیمانده از اینترنت شما به $ KB $ است.
- خط دوم سناریوها $ N $ عدد صحیح مثبت نابیشتر از $ 100000 $ داده شده است که $ i $ امین عدد اندازه $ i $ امین فایل به $ KB $ است. ورودی با $ "0 0 0" $ خاتمه مییابد که نباید پردازش گردد.
خروجی
برای هر سناریو در یک خط بیشترین تعداد فایلهایی که میتوان دانلود کرد را چاپ نمایید.
محدودیتها
- محدودیت زمان: ۱۰ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
ورودی و خروجی نمونه
| ورودی نمونه | خروجی نمونه |
|---|---|
| 3 3 13 5 5 7 7 2 16 6 11 3 3 8 1 8 0 0 0 | 2 4 |