QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#314683 | #3236. Hills And Valleys | dnialh | 0 | 0ms | 0kb | Python3 | 1.4kb | 2024-01-26 04:11:13 | 2024-01-26 04:11:13 |
Judging History
answer
t = int(input())
for _ in range(t):
n = int(input())
l = list(map(int,list(input().strip())))
rev = [0] * 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[-10] + (c == j))
rev.append(best)
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[~(10 * (i + 1) + v)], 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