فهرست مندرجات

BitTorrent

بیت‎ تورنت پروتکلی برای تبادل فایل‌های حجیم در شبکه‌های نظیر به نظیر می‌باشد که هر نود هم به عنوان سرور و هم کلاینت عمل می‌کند‏، بر خلاف معماری سرور-کلاینت که تمامی کلاینت‌ها تقاضاهای خود را به یک سرور مرکزی ارسال می‌کنند. در واقع این پروتکل اجازه می‌دهد که یک گروه از کاربران بتوانند به صورت همزمان با یکدیگر دریافت و ارسال فایل داشته باشند. به طور دقیق‌تر بسته‌ای از فایل‌ها (که تورنت نامیده می‌شود) به تکه‌هایی قسمت‌بندی می‌شوند.(مطابق شکل) برای مثال یک بسته ‎$ ‎10 ‎MB‎ $‎ ممکن است به ‎$ ‎10‎ $‎ بسته ‎$ 1‎ ‎MB‎ $‎ و یا ‎$ ‎40‎ $‎ بسته ‎$ ‎256 ‎KB‎ $‎ شکسته شود. هر زمان که یک نود (کلاینت) یک قسمت از یک فایل را دریافت می‌کند به منبعی برای توزیع آن قسمت از فایل در شبکه تبدیل می‌شود. این قسمت‌ها د‎‎ر اکثر موارد به صورت غیر متوالی دانلود شده‌اند و لازم است مرتب شوند تا فایل اصلی را بسازند. هر نود به صورت مستقل قسمت‌هایی را که باید دانلود کند را مدیریت می‌کند. تمامی قسمت‌ها به جز قسمت آخر دارای سایز یکسانی هستند‏، قسمت آخر می‌تواند سایز کم‌تری داشته باشد.

شما می‌خواهید یک بسته از فایل‌ها را دانلود کنید ولی در این ماه محدودیت مصرف اینترنت دارید. با این حال نمی‌خواهید تا ماه آینده صبر نمایید. هدف شما دانلود بیش‌ترین تعداد فایل با پهنای باند باقی‌مانده اینترنت در این ماه است. کدام قسمت‌ها باید دانلود شود؟

ورودی

خروجی

برای هر سناریو در یک خط بیش‌ترین تعداد فایل‌هایی که می‎توان دانلود کرد را چاپ نمایید.

محدودیت‌ها

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

ورودی نمونه خروجی نمونه
3 3 13
5 5 7
7 2 16
6 11 3 3 8 1 8
0 0 0
2
4