CSES - Datatähti 2022 alku - Results
Submission details
Task:Ositus
Sender:Totska
Submission time:2021-10-15 12:32:09 +0300
Language:Python3 (PyPy3)
Status:READY
Result:65
Feedback
groupverdictscore
#1ACCEPTED40
#2ACCEPTED25
#30
Test results
testverdicttimegroup
#1ACCEPTED0.06 s1, 2, 3details
#2ACCEPTED0.06 s1, 2, 3details
#3ACCEPTED0.06 s1, 2, 3details
#4ACCEPTED0.06 s1, 2, 3details
#5ACCEPTED0.06 s2, 3details
#6ACCEPTED0.10 s3details
#7--3details

Code

from collections import defaultdict, deque
from string import ascii_lowercase

s = input()

end = len(s)
maxnb = [end for _ in range(end)]
maxnb.append(-1)

minimum = end

def default():
    return minimum

def def2():
    return -1

seen = {ascii_lowercase[i]: end for i in range(26)}

for i in range(end-1, -1, -1):
    minimum = min(minimum, seen[s[i]])
    # maxnb[i] = seen[s[i]]
    maxnb[i] = minimum
    seen[s[i]] = i

val = {i: 0 for i in range(end+1)}
val[0] = 1


def getval(x):
    if val[x] > 0:
        return val[x]

    value = 0
    for i in range(first[maxdist], x):
        value += getval(i)

    val[x] = value

    return value

ans = 0

first = {i: 0 for i in range(end+1)}

distances = deque()
distances.append(0)
prevdist = 0

ans = 0
for i in range(end+1):
    curdist = maxnb[i]

    maxdist = distances[0]
    if maxdist < i:
        distances.popleft()
        maxdist = distances[0]

    if curdist > prevdist:
        distances.append(curdist)
        first[curdist] = i

    prevdist = curdist


    getval(i)

MOD = 10**9 + 7


print(val[end] % MOD)
# print(int(getval(end, -1) % MOD))

Test details

Test 1

Group: 1, 2, 3

Verdict: ACCEPTED

input
a

correct output
1

user output
1

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

input
abcdefghij

correct output
512

user output
512

Test 3

Group: 1, 2, 3

Verdict: ACCEPTED

input
abcabaacbc

correct output
120

user output
120

Test 4

Group: 1, 2, 3

Verdict: ACCEPTED

input
aaxxxxxxaa

correct output
4

user output
4

Test 5

Group: 2, 3

Verdict: ACCEPTED

input
mfyzvoxmppoxcvktmcjkryyocfweub...

correct output
643221148

user output
643221148

Test 6

Group: 3

Verdict: ACCEPTED

input
weinscqmmpgbrlboocvtbptgbahmwv...

correct output
831644159

user output
831644159

Test 7

Group: 3

Verdict:

input
sxaoxcyrjoeieyinaqxwukgzdnhhsw...

correct output
816016015

user output
(empty)