ধরুন আমাদের খরচ নামক একটি তালিকা আছে। যেখানে খরচ[i] আছে [c1, c2] নির্দেশ করে যে ব্যক্তি i এর জন্য সিটি 0 তে পৌঁছতে c1 পরিমাণ খরচ হয় এবং সিটি 1 তে পৌঁছতে c2 পরিমাণ খরচ হয়। আমরা চাই যে সংখ্যক লোক শহর 0 তে যেতে চাই প্রয়োজনীয় ন্যূনতম খরচ খুঁজে বের করতে হবে।
সুতরাং, ইনপুট যদি খরচের মত হয় =[[2, 6],[10, 3],[4, 9],[5, 8]], তাহলে আউটপুট হবে 17, কারণ ব্যক্তি 0 এবং 2 যাবে। শহর 0 এবং ব্যক্তি 1 এবং 3 থেকে শহর 1, তাই শহর 0-এর জন্য, খরচ হল 2+4 =6, এবং শহর 1-এর জন্য, খরচ হল 8+3 =11, মোট হল 17৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- s :=0
- a :=একটি নতুন তালিকা
- প্রতি জোড়া (x, y) খরচের জন্য, করুন
- s :=s + x
- শেষে a তে (y - x) ঢোকান
- তালিকা সাজান a
- আমি রেঞ্জ 0 থেকে ফ্লোর (a / 2 এর আকার) - 1 এর জন্য, কর
- s :=s + a[i]
- রিটার্ন এস
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(costs): s = 0 a = [] for x, y in costs: s += x a += (y - x,) a.sort() for i in range(len(a) // 2): s += a[i] return s costs = [[2, 6],[10, 3],[4, 9],[5, 8]] print(solve(costs))
ইনপুট
[[2, 6],[10, 3],[4, 9],[5, 8]]
আউটপুট
17