QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#314682#3236. Hills And Valleysdnialh0 0ms0kbPython31.4kb2024-01-26 04:06:212024-01-26 04:06:22

Judging History

This is the latest submission verdict.

  • [2024-01-26 04:06:22]
  • Judged
  • Verdict: 0
  • Time: 0ms
  • Memory: 0kb
  • [2024-01-26 04:06:21]
  • Submitted

answer

t = int(input())
for _ in range(t):
    n = int(input())
    l = list(map(int,list(input().strip())))

    rev = [[0] for _ in range(10)]

    for i in range(n - 1, -1, -1):
        c = l[i]
        best = 0
        for j in range(9, -1, -1):
            best = max(best, rev[j][-1] + (c == j))
            rev[j].append(best)

    for z in rev:
        z.reverse()

    out = (-1, 1, 1)

    best = [0] * 1000
    loc = [-1] * 1000

    curr = [0] * 10

    for i in range(n):
        c = l[i]
        
        #Do stuff


        for u in range(10):
            for v in range(u + 1, 10):
                ind = 100 * v + 10 * u

                bb = 0
                ii = 0
                for w in range(v, u - 1, -1):
                    nex = best[ind + w] + (c == w)
                    if nex > bb:
                        bb = nex
                        ii = loc[ind + w]

                    best[ind + w] = bb
                    loc[ind + w] = ii

                out = max(out, (best[ind + u] + rev[v][i + 1], loc[ind + u] + 2, i + 1))

        curr[c] += 1
        for j in range(9):
            curr[j + 1] = max(curr[j + 1], curr[j])


        for u in range(10):
            for v in range(u + 1, 10):
                best[101 * v + 10 * u] = curr[u]
                loc[101 * v + 10 * u] = i

    print(' '.join(map(str, out)))
                
            
        
            

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Time Limit Exceeded

input:

100
564
3348010339062339968164170543732424036101480063385567796871300633327190066610177797479597931706239956680908434521050648311220502482402268964497684451036156162125014743550622955579737715237323508714467463047351532756224409691528642332476831673220319724437158730801472447651264708417183934709815...

output:

107 77 495
293 60 1749
1196 260 1585
89 73 404
873 1082 1809
258 17 1220
323 206 986
253 1449 1766
848 3 399

result: