Suppose we have a number n denotes n people and there are two identical voting machines. We also have an array called time of size n such that time[i] represents total time spent by i-th person to vote on any machine. At one time instant, only one person can be there on each of the two machines. We also have another value x, representing the maximum allowable time for which machines are operational, we have to check whether all persons can place their vote or not.
So, if the input is like n = 3, x = 7, time = [3, 5, 3], then the output will be True. Because at time t0 the 0th person go to the first machine and 1st person go to the second machine. Now at time t3 first machine is free. Now 2nd person go to first machine and at time t5 second machine is free and at time t6 first machine is free so all participants have voted in time.
To solve this, we will follow these steps −
Let us see the following implementation to get better understanding −
def solve(n, x, time): total_sum = sum(time) if total_sum <= x: return True time.sort() prev_sum = [0 for i in range(len(time))] prev_sum = time for i in range(1, len(prev_sum)): prev_sum[i] = prev_sum[i - 1] + time[i] for i in range(0, 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]