Submission #1204716

#TimeUsernameProblemLanguageResultExecution timeMemory
1204716ofozBigger segments (IZhO19_segments)Pypy 3
0 / 100
417 ms53832 KiB
from collections import deque
from sys import setrecursionlimit

def isHigher(c1: list[int], c2: list[int]):
    if c1[1] > c2[1]: return True
    elif c1[1] < c2[1]: return False

    if c1[0] < c2[0]: return True
    return False

def solve():
    
    n = int(input())
    a = list(map(int, input().split(" ")))
    def dp(i: int, seg: int): # (mn sum, completed segments, current sum)
        if i < 0: return [-99] * 3 if seg else [0] * 3
        if i+1 < seg or not seg: return [-99] * 3
        c1 = dp(i-1, seg)
        c2 = dp(i-1, seg-1)
        
        c1[2] += a[i]
        
        if c2[2] < c2[0]: return c1

        c2[0] = c2[2]
        c2[2] = a[i]
        c2[1] += 1

        if isHigher(c1, c2): return c1
        return c2
    


    res = -1
    for seg in range(1, n+1):
        cur = dp(n-1, seg)
        if cur[1] < seg: continue
        # print(cur)
        res = max(res, cur[1])


    print(res)

        


"""
A_i <= A_i+1
"""




solve()

Compilation message (stdout)

Compiling 'segments.py'...

=======
  adding: __main__.pyc (deflated 40%)

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