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...