Submission details
Task:Monikulmio
Sender:sevti
Submission time:2025-10-27 10:48:59 +0200
Language:Python3 (PyPy3)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED100
Test results
testverdicttimescore
#1ACCEPTED0.04 s10details
#2ACCEPTED0.05 s10details
#3ACCEPTED0.05 s10details
#4ACCEPTED0.05 s10details
#5ACCEPTED0.05 s10details
#6ACCEPTED0.04 s10details
#7ACCEPTED0.08 s10details
#8ACCEPTED0.09 s10details
#9ACCEPTED0.10 s10details
#10ACCEPTED0.14 s10details

Code

n, m, k = map(int, input().split())
points = [tuple(map(int, input().split())) for _ in range(k)]
grid = [['.' for _ in range(m)] for _ in range(n)]

def draw_line(y1, x1, y2, x2):
    dy = 1 if y2 > y1 else -1 if y2 < y1 else 0
    dx = 1 if x2 > x1 else -1 if x2 < x1 else 0
    y, x = y1, x1
    while True:
        if (y, x) in [(y1, x1), (y2, x2)]:
            grid[y - 1][x - 1] = '*'
        else:
            if dy == 0: grid[y - 1][x - 1] = '='
            elif dx == 0: grid[y - 1][x - 1] = '|'
            elif dy == dx: grid[y - 1][x - 1] = '\\'
            else: grid[y - 1][x - 1] = '/'
        if (y, x) == (y2, x2):
            break
        y += dy
        x += dx

for i in range(k):
    y1, x1 = points[i]
    y2, x2 = points[(i + 1) % k]
    draw_line(y1, x1, y2, x2)

for y in range(n):
    crossings = []
    for i in range(k):
        y1, x1 = points[i]
        y2, x2 = points[(i + 1) % k]
        
        if y1 > y2:
            y1, x1, y2, x2 = y2, x2, y1, x1
        current_row = y + 1
        
        if y1 < current_row <= y2:
            if y2 == y1:
                continue
            t = (current_row - y1) / (y2 - y1)
            x_cross = x1 + t * (x2 - x1)
            crossings.append(x_cross)
    
    crossings.sort()
    for x in range(m):
        ch = grid[y][x]
        if ch == '.':
            count = sum(1 for xc in crossings if xc < x + 1)
            if count % 2 == 1:
                grid[y][x] = '#'

for row in grid:
    print(''.join(row))

Test details

Test 1 (public)

Verdict: ACCEPTED

input
8 9 5
5 2
2 5
5 8
7 8
...

correct output
.........
....*....
.../#\...
../###\..
.*#####*.
...

user output
.........
....*....
.../#\...
../###\..
.*#####*.
...

Test 2 (public)

Verdict: ACCEPTED

input
20 40 4
5 10
5 30
15 30
15 10

correct output
.................................

user output
.................................

Test 3 (public)

Verdict: ACCEPTED

input
20 40 29
8 7
13 2
14 2
9 7
...

correct output
.................................

user output
.................................

Test 4 (public)

Verdict: ACCEPTED

input
20 40 14
5 12
5 25
8 28
13 28
...

correct output
.................................

user output
.................................

Test 5 (public)

Verdict: ACCEPTED

input
20 40 12
3 20
7 16
7 9
11 13
...

correct output
.................................

user output
.................................

Test 6 (public)

Verdict: ACCEPTED

input
9 35 33
2 3
2 8
4 8
4 5
...

correct output
.................................

user output
.................................

Test 7 (public)

Verdict: ACCEPTED

input
30 100 69
6 10
6 14
7 14
7 18
...

correct output
.................................

user output
.................................

Test 8 (public)

Verdict: ACCEPTED

input
40 60 192
11 3
11 5
10 6
11 7
...

correct output
.................................

user output
.................................

Test 9 (public)

Verdict: ACCEPTED

input
50 100 142
1 1
1 7
1 11
1 14
...

correct output
*=====*===*==*...................

user output
*=====*===*==*...................

Test 10 (public)

Verdict: ACCEPTED

input
100 100 1000
10 1
4 7
1 4
1 9
...

correct output
...*====*........................

user output
...*====*........................