Submission #632886

#TimeUsernameProblemLanguageResultExecution timeMemory
632886beaconmcGlobal Warming (CEOI18_glo)Pypy 3
17 / 100
250 ms43764 KiB
def bisect(arr, v, asc): lo = 0 hi = len(arr) while lo < hi: mid = lo + (hi - lo) // 2 if asc: if v <= arr[mid]: hi = mid else: lo = mid + 1 else: if v >= arr[mid]: hi = mid else: lo = mid + 1 return lo def find_lis(inp): lis_ending = [0] * len(inp) lis_ending_arr = [] lis_starting = [0] * len(inp) lis_starting_arr = [] for i in range(len(inp)): # LIS ending at i idx = bisect(lis_ending_arr, inp[i], True) if idx == len(lis_ending_arr): lis_ending_arr.append(inp[i]) else: lis_ending_arr[idx] = inp[i] lis_ending[i] = len(lis_ending_arr) # LIS starting at i j = len(inp) - 1 - i idx = bisect(lis_starting_arr, inp[j], False) if idx == len(lis_starting_arr): lis_starting_arr.append(inp[j]) else: lis_starting_arr[idx] = inp[j] lis_starting[j] = len(lis_starting_arr) return lis_ending, lis_starting def beacon(inp): lis_ending, lis_starting = find_lis(inp) res = 0 for i in range(len(inp) - 1): val = lis_ending[i] + lis_starting[i + 1] res = max(res, val) res = max(res, lis_ending[len(inp) - 1]) return res n,x = map(int, input().split()) inp = [int(x) for x in input().split()] print(beacon(inp))
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...