| Task: | Ositus |
| Sender: | Totska |
| Submission time: | 2021-10-15 12:28:40 +0300 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | 40 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 40 |
| #2 | WRONG ANSWER | 0 |
| #3 | WRONG ANSWER | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.06 s | 1, 2, 3 | details |
| #2 | ACCEPTED | 0.06 s | 1, 2, 3 | details |
| #3 | ACCEPTED | 0.06 s | 1, 2, 3 | details |
| #4 | ACCEPTED | 0.06 s | 1, 2, 3 | details |
| #5 | WRONG ANSWER | 0.06 s | 2, 3 | details |
| #6 | WRONG ANSWER | 0.10 s | 3 | details |
| #7 | TIME LIMIT EXCEEDED | -- | 3 | details |
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]:
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])
# 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: WRONG ANSWER
| input |
|---|
| mfyzvoxmppoxcvktmcjkryyocfweub... |
| correct output |
|---|
| 643221148 |
| user output |
|---|
| 17469917809717459008639467520 |
Test 6
Group: 3
Verdict: WRONG ANSWER
| input |
|---|
| weinscqmmpgbrlboocvtbptgbahmwv... |
| correct output |
|---|
| 831644159 |
| user output |
|---|
| 473563938315165596299162606540... Truncated |
Test 7
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input |
|---|
| sxaoxcyrjoeieyinaqxwukgzdnhhsw... |
| correct output |
|---|
| 816016015 |
| user output |
|---|
| (empty) |
