| Task: | Ositus |
| Sender: | Totska |
| Submission time: | 2021-10-17 20:00:20 +0300 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 40 |
| #2 | ACCEPTED | 25 |
| #3 | ACCEPTED | 35 |
| 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 | ACCEPTED | 0.06 s | 2, 3 | details |
| #6 | ACCEPTED | 0.08 s | 3 | details |
| #7 | ACCEPTED | 0.44 s | 3 | details |
Code
from collections import deque
from string import ascii_lowercase
from os import read
import cProfile
#
s = "-" + input() + "x"
# s = ["-", read(0, 999999999).decode().strip(), "x"]
# s = ["-", input(), "x"]
# def opt_join(x):
# global s
# s = ''.join(x)
#
# opt_join(s)
# print(s)
end = len(s) - 1
maxnb = [end+1 for _ in range(end+1)]
maxnb.append(-1)
minimum = end + 1
seen = {ascii_lowercase[i]: end+1 for i in range(26)}
last = {i: -1 for i in range(end+2)}
distances = deque()
prevdist = 9999999
for i in range(end, 0, -1):
minimum = min(minimum, seen[s[i]])
if minimum < prevdist:
distances.insert(0, minimum)
prevdist = minimum
# maxnb[i] = seen[s[i]]
maxnb[i] = minimum
seen[s[i]] = i
last[maxnb[i]] = max(last[maxnb[i]], i)
seen.clear()
def getsum(a, b):
return sumtable[b] - sumtable[a-1]
# i+1 indeksointi
sumtable = [0, 1]
MOD = 10**9 + 7
start = 1
mindist = distances.popleft()
for i in range(2, end+1):
# check
if i > mindist:
start = last[mindist] + 1
mindist = distances.popleft()
sumtable.append((sumtable[i-1] % MOD + getsum(start, i-1) % MOD) % MOD)
print((getsum(end, end)) % MOD)
# print(int(getval(end, -1) % MOD))
# pr.disable()
# pr.print_stats(sort='time')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: ACCEPTED
| input |
|---|
| sxaoxcyrjoeieyinaqxwukgzdnhhsw... |
| correct output |
|---|
| 816016015 |
| user output |
|---|
| 816016015 |
