CSES - HIIT Open 2024 - Results
Submission details
Task:Hiitism
Sender:Viestipojat
Submission time:2024-11-16 14:33:44 +0200
Language:Python3 (PyPy3)
Status:READY
Result:
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.05 sdetails
#4ACCEPTED0.09 sdetails
#5ACCEPTED0.06 sdetails
#6ACCEPTED0.43 sdetails
#7ACCEPTED0.81 sdetails
#8--details
#9--details
#10--details
#11--details
#12--details
#13--details
#14--details
#15ACCEPTED0.20 sdetails
#160.10 sdetails
#170.11 sdetails
#180.18 sdetails
#190.12 sdetails
#20--details
#21--details
#22--details
#23--details
#24ACCEPTED0.21 sdetails
#250.10 sdetails
#260.12 sdetails
#270.13 sdetails
#280.12 sdetails
#290.19 sdetails
#30ACCEPTED0.21 sdetails

Code

cs, rs = [int(x) for x in input().split(" ") if x != ""]

#lines = [l for l in open(0).read().split("\n") if l != '']

#cs, rs = [int(x) for x in lines[0] if x != " "]

#m = [list(x) for x in lines[1:] if x != '']
m = [list(input()) for _ in range(rs)]


actions = []

removed_cols = set()
removed_rows = set()

sol = False
while not sol:
    cut = False

    for r in [x for x in range(0, rs) if x not in removed_rows]:
        valid_idx = [x for x in range(0, cs) if x not in removed_cols]
        first = valid_idx[0]
        if m[r][first] != '.' and all(map(lambda x: m[r][x] == m[r][first], valid_idx)):
            #cut r
            cut = True
            actions.append(f"R {r+1} {m[r][first]}")
            removed_rows.add(r)
            break

    if not cut:
        for c in [x for x in range(0, cs) if x not in removed_cols]:
            valid_idx = [x for x in range(0, rs) if x not in removed_rows]
            first = valid_idx[0]
            if m[first][c] != '.' and all(map(lambda x: m[x][c] == m[first][c], valid_idx)):
                cut = True
                actions.append(f"C {c+1} {m[first][c]}")
                removed_cols.add(c)
                break

    if not cut:
        break

    sol = True
    for (i, r) in enumerate(m):
        if i in removed_rows:
            continue
        for (i, c) in enumerate(r):
            if i in removed_cols:
                continue
            if c != '.':
                sol = False
                break
        if not sol:
            break

if sol:
    print(len(actions))
    print("\n".join(reversed(actions)))
else:
    print("Impossible")

Test details

Test 1

Verdict: ACCEPTED

input
3 3
.H.
IHI
TTT

correct output
3
R 2 I
C 2 H
R 3 T

user output
3
R 2 I
C 2 H
R 3 T

Test 2

Verdict: ACCEPTED

input
2 2
.H
IH

correct output
2
R 2 I
C 2 H

user output
2
R 2 I
C 2 H

Test 3

Verdict: ACCEPTED

input
10 10
T.TIH.....
IIIIIIIIII
T.TIH.....
TIIIHIIIII
...

correct output
7
C 3 T
R 10 I
R 4 I
C 5 H
...

user output
7
C 3 T
R 10 I
R 4 I
C 5 H
...

Test 4

Verdict: ACCEPTED

input
100 100
.............H........I.....IT...

correct output
19
R 3 T
C 44 H
R 34 I
C 30 T
...

user output
19
R 3 T
C 44 H
R 34 I
C 30 T
...

Test 5

Verdict: ACCEPTED

input
100 100
.........................H.......

correct output
Impossible

user output
Impossible

Test 6

Verdict: ACCEPTED

input
1000 1000
H.II..T.I.IH..I..H.I..I..ITHH....

correct output
Impossible

user output
Impossible

Test 7

Verdict: ACCEPTED

input
1000 1000
HHHIHHHHHHHHHHHHIHHHHHHHHHHHHH...

correct output
Impossible

user output
Impossible

Test 8

Verdict:

input
1000 1000
IHIHTI.T.H..IHHIIT.I.TT.HH.HI....

correct output
1552
C 822 I
C 83 T
C 55 I
R 984 H
...

user output
(empty)

Test 9

Verdict:

input
1000 1000
HHHHHHHHHHHHHHHHHHHHHIHHHHHHHH...

correct output
1727
R 500 I
C 938 H
C 804 H
R 263 H
...

user output
(empty)

Test 10

Verdict:

input
1000 1000
TITTTHTITTHTHTHITTTTTTTHTHTTTI...

correct output
1856
C 22 H
R 531 T
C 412 H
C 288 H
...

user output
(empty)

Test 11

Verdict:

input
1000 1000
IHHTTTTHTIIIHTTTTHTIITTTHHITIT...

correct output
1826
R 200 H
R 167 I
C 445 I
C 355 I
...

user output
(empty)

Test 12

Verdict:

input
1000 1000
TTTTTITTTHTHTITIIHTIITIHTTIHTT...

correct output
Impossible

user output
(empty)

Test 13

Verdict:

input
1000 1000
TITHITITIITTIIIIIHIIIIHTIIIHTI...

correct output
Impossible

user output
(empty)

Test 14

Verdict:

input
1000 1000
TTTTTTTTTTTTTTTTTTTITTTTTTTITT...

correct output
Impossible

user output
(empty)

Test 15

Verdict: ACCEPTED

input
1000 1000
IHTHHHIHIIIHHTTHHHHIHIIHHIHHHH...

correct output
Impossible

user output
Impossible

Test 16

Verdict:

input
1000 500
HIHHTHTITTHIHTHTTHIHTTIHTTHHTH...

correct output
1417
C 75 I
R 430 T
C 195 H
R 441 I
...

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 23, in <module>
    if m[r][first] != '.' and all(map(lambda x: m[r][x] == m[r][first], valid_idx)):
  File "input/code.py", line 23, in <lambda>
    if m[r][first] != '.' and all(map(lambda x: m[r][x] == m[r][first], valid_idx)):
IndexError: list index out of range

Test 17

Verdict:

input
500 1000
IHIIIHIIHIIIIIHIHHIIIIIIIIIIII...

correct output
1418
C 971 T
C 744 I
C 654 I
C 540 T
...

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 8, in <module>
    m = [list(input()) for _ in range(rs)]
  File "input/code.py", line 8, in <listcomp>
    m = [list(input()) for _ in range(rs)]
EOFError

Test 18

Verdict:

input
1000 500
IIIIIIIIIIIIIIITIIIIIIITTIIIII...

correct output
Impossible

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 34, in <module>
    if m[first][c] != '.' and all(map(lambda x: m[x][c] == m[first][c], valid_idx)):
IndexError: list index out of range

Test 19

Verdict:

input
500 1000
HIITITHHHHIHHIHHTHIIIHHHHTHTHH...

correct output
Impossible

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 8, in <module>
    m = [list(input()) for _ in range(rs)]
  File "input/code.py", line 8, in <listcomp>
    m = [list(input()) for _ in range(rs)]
EOFError

Test 20

Verdict:

input
1000 1000
TIITIIIIIIIIIIIIIIIIIHIHIIIIII...

correct output
Impossible

user output
(empty)

Test 21

Verdict:

input
1000 1000
TTHTTTTTHTTTHTTTTTTTTHHTTTTTIT...

correct output
Impossible

user output
(empty)

Test 22

Verdict:

input
1000 1000
IHIIIIITHIIIHIHHHITHIIIIHTTIHI...

correct output
Impossible

user output
(empty)

Test 23

Verdict:

input
1000 1000
TTHIHIITHTI.HHIHHITIHIHIHIITIH...

correct output
Impossible

user output
(empty)

Test 24

Verdict: ACCEPTED

input
1000 1000
IHIHIIIIIIIIIHIIIHIHIITIHIIIII...

correct output
Impossible

user output
Impossible

Test 25

Verdict:

input
1000 500
HIHITTIHITHHHTITHIHHHTHHIHHIII...

correct output
Impossible

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 23, in <module>
    if m[r][first] != '.' and all(map(lambda x: m[r][x] == m[r][first], valid_idx)):
  File "input/code.py", line 23, in <lambda>
    if m[r][first] != '.' and all(map(lambda x: m[r][x] == m[r][first], valid_idx)):
IndexError: list index out of range

Test 26

Verdict:

input
500 1000
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHH...

correct output
Impossible

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 8, in <module>
    m = [list(input()) for _ in range(rs)]
  File "input/code.py", line 8, in <listcomp>
    m = [list(input()) for _ in range(rs)]
EOFError

Test 27

Verdict:

input
1000 500
TTTTIHTTTHTTHTITTTTHTHTTHTITTI...

correct output
Impossible

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 23, in <module>
    if m[r][first] != '.' and all(map(lambda x: m[r][x] == m[r][first], valid_idx)):
  File "input/code.py", line 23, in <lambda>
    if m[r][first] != '.' and all(map(lambda x: m[r][x] == m[r][first], valid_idx)):
IndexError: list index out of range

Test 28

Verdict:

input
500 1000
HTIIIHIIIHITIHIIIIIIHTIIIIITHI...

correct output
Impossible

user output
(empty)

Error:
Traceback (most recent call last):
  File "input/code.py", line 8, in <module>
    m = [list(input()) for _ in range(rs)]
  File "input/code.py", line 8, in <listcomp>
    m = [list(input()) for _ in range(rs)]
EOFError

Test 29

Verdict:

input
1000 1000
.................................

correct output
0

user output
Impossible

Test 30

Verdict: ACCEPTED

input
1000 1000
.................................

correct output
1
C 562 T

user output
1
C 562 T