CSES - Datatähti 2022 loppu - Results
Submission details
Task:Lista
Sender:intoo
Submission time:2022-01-22 16:07:27 +0200
Language:Python3 (PyPy3)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.06 s1, 2, 3details
#20.06 s2, 3details
#30.07 s3details
#40.06 s1, 2, 3details
#5ACCEPTED0.04 s1, 2, 3details
#6ACCEPTED0.04 s1, 2, 3details
#7ACCEPTED0.04 s1, 2, 3details
#8ACCEPTED0.10 s3details
#90.06 s3details
#100.06 s3details

Code

def fill_blanks(s, l):
    n = len(s)
    qs = 0
    for i in range(n):
        qs += s[i] == '?'
    if qs == 0: return s
    if l == "":
        if n == 1: return "0"
        if s[0] == '?': s[0] = '1'
        for i in range(1, n):
            if s[i] == '?': s[i] = '0'
        return s
    if len(l) > len(s): return ""
    if len(l) < len(s):
        if s[0] == '?': s[0] = '1'
        for i in range(1, n):
            if s[i] == '?': s[i] = '0'
        if int(''.join(s)) <= int(''.join(l)): return ""
        return s
    nines = 0
    for c in l:
        nines += c == '9'
    if nines == n: return ""
    if nines == n-1 and l[0] != '9':
        if s[0] == '?':
            s[0] = l[0] + 1
        elif s[0] <= l[0]:
            return ""
    b = []
    for i in range(n):
        if s[i] == l[i] or s[i] == '?':
            b.append(0)
        else:
            b.append((int(s[i])-int(l[i]))/abs(int(s[i])-int(l[i])))
    qi = []
    for i in range(n):
        if s[i] == '?':
            qi.append(i)
    le = 0
    gr = 0
    while le < n and b[le] != -1: le += 1
    while gr < n and b[gr] != 1: gr += 1
    if gr < le:
        for i in qi:
            if i < gr: s[i] = l[i]
            else: s[i] = '0'
    elif le < gr:
        ti = -1
        for i in qi:
            if i < le and l[i] != '9': ti = i
        if ti == -1: return ""
        for i in qi:
            if i < ti: s[i] = l[i]
            elif i == ti: s[i] = l[i]+1
            else: s[i] = '0'
    else:
        s = str(int(''.join(l))+1)
    if int(''.join(s)) <= int(''.join(l)): return ""
    return s

n = int(input())
v = []
l = ""
for i in range(n):
    s = list(input())
    s = fill_blanks(s, l)
    if s == "":
        print("IMPOSSIBLE")
        exit(0)
    v.append(''.join(s))
    l = s
last = -1
for s in v:
    if int(s) <= last:
        print("IMPOSSIBLE")
        exit(0)
    last = int(s)
print(*v, sep="\n")

Test details

Test 1

Group: 1, 2, 3

Verdict:

input
100
??
??
??
??
...

correct output
10
11
12
13
20
...

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 66, in <module>
    s = fi...

Test 2

Group: 2, 3

Verdict:

input
1000
8??
??8?
????
????
...

correct output
800
1080
1081
1082
1083
...

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 66, in <module>
    s = fi...

Test 3

Group: 3

Verdict:

input
1000
??????
?????9?
??98???
?????5?
...

correct output
100000
1000090
1098000
1098050
4100001
...

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 66, in <module>
    s = fi...

Test 4

Group: 1, 2, 3

Verdict:

input
100
?
?
?
?
...

correct output
1
2
3
4
5
...

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 66, in <module>
    s = fi...

Test 5

Group: 1, 2, 3

Verdict: ACCEPTED

input
2
???
??

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 6

Group: 1, 2, 3

Verdict: ACCEPTED

input
3
123
???
124

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 7

Group: 1, 2, 3

Verdict: ACCEPTED

input
5
1??
???
2??
???
...

correct output
IMPOSSIBLE

user output
IMPOSSIBLE

Test 8

Group: 3

Verdict: ACCEPTED

input
1000
?????????
?????????
?????????
?????????
...

correct output
100000000
100000001
100000002
100000003
100000004
...

user output
100000000
100000001
100000002
100000003
100000004
...
Truncated

Test 9

Group: 3

Verdict:

input
900
???000000
???000000
???000000
???000000
...

correct output
100000000
101000000
102000000
103000000
104000000
...

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 66, in <module>
    s = fi...

Test 10

Group: 3

Verdict:

input
1000
???1?????
???0?????
???1?????
???0?????
...

correct output
100100000
101000000
101100000
102000000
102100000
...

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 66, in <module>
    s = fi...