ধরুন একটি বইয়ের দোকানের মালিকের একটি দোকান খোলা আছে গ্রাহকদের তালিকা এন্ট্রি মিনিটের সংখ্যার জন্য। প্রতি মিনিটে, কিছু সংখ্যক গ্রাহক (গ্রাহক[i]) দোকানে প্রবেশ করে, তারপর সেই মিনিটের শেষে সেই সমস্ত গ্রাহকরা চলে যায়। কিছু মিনিটে, মালিক বিরক্ত হয়। এখন মালিক যদি i-th মিনিটে অসন্তুষ্ট হন, তাহলে ক্রুম্পি[i] =1, অন্যথায় খারাপ [i] =0। বইয়ের দোকানের মালিক যখন অসন্তুষ্ট হন, তখন সেই মিনিটের গ্রাহকরা অসন্তুষ্ট হন, অন্যথায় তারা খুশি হন। বইয়ের দোকানের মালিক একটি কৌশল জানেন যাতে X মিনিটের জন্য নিজেকে ক্রুদ্ধ না রাখা যায়। এই কৌশলটি একবারের বেশি ব্যবহার করা যাবে না। আমাদের সারা দিন খুশি হতে পারে এমন সর্বাধিক সংখ্যক গ্রাহক খুঁজে বের করতে হবে। সুতরাং যদি ইনপুটটি এরকম হয়:গ্রাহক =[1,0,1,2,1,1,7,5] এবং grumpy =[0,1,0,1,0,1] এবং X =3, তাহলে আউটপুট 16 হবে। এর কারণ হল মালিক শেষ তিন মিনিটের জন্য নিজেরা বিরক্ত হবেন না। সুতরাং খুশি গ্রাহকদের সর্বাধিক সংখ্যা হল 1 + 1 + 1 + 1 + 7 + 5 =16
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
সেট i :=0, j :=0, যোগফল :=খালি তালিকা এবং তাপমাত্রা :=0
-
যখন j – i + 1
-
যদি grumpy[j] 1 হয়, তাহলে temp :=temp + গ্রাহক[j]
-
1 দ্বারা j বাড়ান
-
-
যোগফল অ্যারেতে একটি তালিকা [temp, i, j] সন্নিবেশ করান
-
i এবং j 1 দ্বারা বাড়ান
-
যখন j <গ্রাহকের তালিকার দৈর্ঘ্য
-
যদি ক্রুদ্ধ[i - 1] 1 হয়, তাহলে temp :=temp – গ্রাহক[i - 1]
-
যদি grumpy[j] 1 হয়, তাহলে temp :=temp + গ্রাহক[j]
-
যোগফল অ্যারেতে একটি তালিকা [temp, i, j] সন্নিবেশ করান
-
i এবং j 1 দ্বারা বাড়ান
-
-
যোগফল :=অভ্যন্তরীণ তালিকার প্রথম উপাদানের উপর ভিত্তি করে যোগফলের অ্যারে সাজান
-
index1 :=যোগফলের শেষ তালিকার দ্বিতীয় উপাদান, index2 :=যোগফলের শেষ তালিকার তৃতীয় উপাদান,
-
সূচী 1 থেকে সূচী 2 রেঞ্জের মধ্যে i জন্য grumpy[i] :=0
সেট করুন -
উত্তর :=0
-
আমি 0 থেকে গ্রাহকদের দৈর্ঘ্যের মধ্যে
-
যদি grumpy[i] 0 হয়, তাহলে ans :=ans + customers[i>
-
-
উত্তর ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution(object): def maxSatisfied(self, customers, grumpy, X): i = 0 j = 0 sums = [] temp = 0 while j-i+1<X: if grumpy[j]: temp+=customers[j] j+=1 sums.append([temp,i,j]) i+=1 j+=1 while j<len(customers): if grumpy[i-1]: temp-=customers[i-1] if grumpy[j]: temp+=customers[j] sums.append([temp,i,j]) i+=1 j+=1 sums =sorted(sums,key = lambda v : v[0]) index1 = sums[-1][1] index2 = sums[-1][2] for i in range(index1,index2+1): grumpy[i] = 0 ans = 0 for i in range(len(customers)): if not grumpy[i]: ans+=customers[i] return ans ob = Solution() print(ob.maxSatisfied([1,0,1,2,1,1,7,5],[0,1,0,1,0,1,0,1],3))
ইনপুট
[1,0,1,2,1,1,7,5] [0,1,0,1,0,1,0,1] 3
আউটপুট
16