Submission #1106144

#TimeUsernameProblemLanguageResultExecution timeMemory
1106144MrTEKSwimming competition (LMIO18_plaukimo_varzybos)Cpython 3
0 / 100
16 ms2896 KiB
def find_min_max_diff(N, A, B, AR): AR.sort() low = 0 high = AR[-1] - AR[0] def is_possible(D): dp = [False] * (N + 1) dp[0] = True prefix_dp = [0] * (N + 1) prefix_dp[0] = dp[0] l = 0 # left pointer for the window for i in range(1, N + 1): while l < i and AR[i - 1] - AR[l] > D: l += 1 min_k = max(l, i - B) max_k = i - A if min_k <= max_k: total_dp = prefix_dp[max_k] - (prefix_dp[min_k - 1] if min_k > 0 else 0) dp[i] = total_dp > 0 else: dp[i] = False prefix_dp[i] = prefix_dp[i - 1] + dp[i] return dp[N] result = -1 while low <= high: mid = (low + high) // 2 if is_possible(mid): result = mid high = mid - 1 else: low = mid + 1 return result # Read input N, A, B = map(int, input().split()) AR = list(map(int, input().split())) # Find and print the minimal possible maximum difference print(find_min_max_diff(N, A, B, AR))
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...