ধরুন চারটি কেবিন সহ একটি ফেরিস হুইল আছে এবং প্রতিটি কেবিনে চারজন যাত্রী থাকতে পারে। চাকা ঘড়ির কাঁটার বিপরীত দিকে ঘোরে এবং প্রতিটি ঘূর্ণনের জন্য 'রান' পরিমাণ টাকা খরচ হয়। আমাদের কাছে এখন একটি অ্যারে 'কাস্ট' রয়েছে যাতে n আইটেম রয়েছে এবং প্রতিটি আইটেম i-ম ঘূর্ণনের আগে ফেরিস হুইলে প্রবেশের জন্য অপেক্ষা করা লোকের সংখ্যা নির্দেশ করে। চাকাতে চড়ার জন্য, প্রতিটি গ্রাহককে একটি পরিমাণ টাকা 'বোর্ড' দিতে হবে এবং সেই পরিমাণ টাকা চাকাটির ঘড়ির কাঁটার বিপরীতে ঘোরানোর জন্য। কোনো কেবিনে কোনো আসন খালি থাকলে লাইনে দাঁড়িয়ে থাকা ব্যক্তিদের অপেক্ষা করা উচিত নয়। সুতরাং ডেটা দেওয়া হলে, আমাদেরকে ন্যূনতম পরিমাণে ঘূর্ণন প্রয়োজন যাতে লাভ সর্বাধিক করা যায়।
সুতরাং, যদি ইনপুট কাস্ট =[6,4], বোর্ড =6, রান =4 এর মত হয়, তাহলে আউটপুট হবে 3
প্রথমে লাইনে দাঁড়িয়ে আছে ৬ জন। তাই প্রথমে 4 জন প্রথম কেবিনে প্রবেশ করে এবং বাকিরা পরবর্তী কেবিনের জন্য অপেক্ষা করে৷
চাকা ঘোরে, এবং দ্বিতীয় কেবিন আসে। এদিকে লাইনে ওঠেন আরও ৪ জন। তাই পরবর্তী 4 জন অপেক্ষা করছে পরের কেবিনে।
চাকাটি আবার ঘোরে, এবং বাকি তিনজন গ্রাহক পরের কেবিনে প্রবেশ করে।
সুতরাং, সমস্ত গ্রাহকদের পরিষেবা দেওয়ার জন্য ন্যূনতম তিনটি ঘূর্ণন প্রয়োজন৷
এই ঘূর্ণনগুলি থেকে সর্বাধিক মুনাফা অর্জন করা হয় (10 * 6) - (3 * 4) =48৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
res :=-1
-
mst :=0
-
tmp :=0
-
wt :=0
-
কাস্টে প্রতিটি সূচক আইডিএক্স এবং মান ভ্যালের জন্য, করুন
-
wt :=wt + val
-
chg :=সর্বনিম্ন (4, wt)
-
wt :=wt - chg
-
tmp :=tmp + chg * বোর্ড - রান
-
যদি mst
-
res :=idx + 1
-
mst :=tmp
-
-
-
x :=wt / 4
-
y :=wt mod 4
-
যদি 4 * বোর্ড> রান হয়, তাহলে
-
res :=res + x
-
-
যদি y * বোর্ড> রান হয়, তাহলে
-
res :=res + 1
-
-
রিটার্ন রিটার্ন
উদাহরণ
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
def solve(cust, board, run): res = -1 mst = 0 tmp = 0 wt = 0 for idx, val in enumerate(cust): wt += val chg = min(4, wt) wt -= chg tmp += chg * board - run if mst < tmp: res, mst = idx+1, tmp x, y = divmod(wt, 4) if 4 * board > run: res += x if y * board > run: res += 1 return res print(solve([6,4], 6, 4))
ইনপুট
[6,4], 6, 4
আউটপুট
3