ধরুন, n জন মানুষ এবং দুটি একই ভোটিং মেশিন আছে। time নামক একটি অ্যারে আছে যাতে time[i] হলো i-তম ব্যক্তির ভোট দিতে লাগা সময়। একবারে প্রতিটি মেশিনে একজনেরই ভোট দেওয়া যাবে। একটি মান x আছে যা মেশিন চালু থাকার সর্বোচ্চ সময়। আমাদের যাচাই করতে হবে যে সবাই নির্ধারিত সময়ের ভিতর ভোট দিতে পারবে কিনা।
যেমন, ইনপুট n = 3, x = 7, time = [3, 5, 3] হলে আউটপুট হবে True। কারণ: t=0-এ ০ নম্বর ব্যক্তি ১ নম্বর মেশিনে, ১ নম্বর ব্যক্তি ২ নম্বর মেশিনে যায়। t=3-এ ১ নম্বর মেশিন ফ্রি হয়, ২ নম্বর ব্যক্তি সেখানে যায়। t=5-এ ২ নম্বর মেশিন ফ্রি হয়, t=6-এ ১ নম্বর মেশিন ফ্রি হয় — সবাই সময়মতো ভোট দিয়েছে।
সমাধানের ধাপসমূহ
total_sum = sum(time)। যদিtotal_sum <= xহয়, তবে True ফেরত দিন (এক মেশিনে সবারই হয়ে যাবে)।timeসর্ট করুন।prev_sumঅ্যারে বানান যেখানেprev_sum[i]=time[0] + ... + time[i]।- দুটি নেস্টেড লুপ
iএবংj(j > i) দিয়ে চেক করুন:temp_sum = prev_sum[i] + (total_sum - prev_sum[j])।- যদি
temp_sum <= xএবংtotal_sum - temp_sum <= xহয়, তবে True ফেরত দিন।
- লুপ শেষ হলে False ফেরত দিন।
উদাহরণ কোড
def solve(n, x, time):
total_sum = sum(time)
if total_sum <= x:
return True
time.sort()
prev_sum = [0] * len(time)
prev_sum[0] = time[0]
for i in range(1, len(prev_sum)):
prev_sum[i] = prev_sum[i-1] + time[i]
for i in range(len(prev_sum)):
for j in range(i+1, len(prev_sum)):
temp_sum = prev_sum[i] + (total_sum - prev_sum[j])
if temp_sum <= x and total_sum - temp_sum <= x:
return True
return False
n = 3
x = 7
time = [3, 5, 3]
print(solve(n, x, time))
ইনপুট
3, 7, [3, 5, 3]
আউটপুট
True