Submission details
Task:Monikulmio
Sender:Username*
Submission time:2025-10-31 20:53:22 +0200
Language:Python3 (CPython3)
Status:READY
Result:90
Feedback
groupverdictscore
#190
Test results
testverdicttimescore
#1ACCEPTED0.02 s10details
#2ACCEPTED0.02 s10details
#3ACCEPTED0.02 s10details
#4ACCEPTED0.02 s10details
#5ACCEPTED0.02 s10details
#6ACCEPTED0.02 s10details
#7ACCEPTED0.06 s10details
#8ACCEPTED0.11 s10details
#9ACCEPTED0.16 s10details
#10--0details

Code

def inp():
    return list(map(int, input().split()))

n, m, k = inp()
pts = []
for _ in range(k):
    y, x = inp()
    pts.append((y, x))

grid = [['.' for _ in range(m)] for _ in range(n)]

def sign(a):
    if a > 0:
        return 1
    if a < 0:
        return -1
    return 0

for i in range(k):
    y1, x1 = pts[i]
    y2, x2 = pts[(i + 1) % k]
    dy = y2 - y1
    dx = x2 - x1
    steps = max(abs(dy), abs(dx))
    sy = sign(dy)
    sx = sign(dx)
    for t in range(steps + 1):
        r = y1 + t * sy
        c = x1 + t * sx
        rr = r - 1
        cc = c - 1
        if 0 <= rr < n and 0 <= cc < m:
            if t == 0 or t == steps:
                grid[rr][cc] = '*'
            else:
                ch = None
                if dy == 0:
                    ch = '='
                elif dx == 0:
                    ch = '|'
                else:
                    if dy * dx > 0:
                        ch = '\\'
                    else:
                        ch = '/'
                if grid[rr][cc] != '*':
                    grid[rr][cc] = ch

def point_in_poly(px, py, poly):
    inside = False
    j = len(poly) - 1
    for i in range(len(poly)):
        yi, xi = poly[i]
        yj, xj = poly[j]
        xi, yi = xi, yi
        xj, yj = xj, yj
        intersect = ((yi > py) != (yj > py)) and (px < (xj - xi) * (py - yi) / (yj - yi) + xi)
        if intersect:
            inside = not inside
        j = i
    return inside

for r in range(1, n + 1):
    for c in range(1, m + 1):
        if grid[r - 1][c - 1] == '.':
            if point_in_poly(c, r, pts):
                grid[r - 1][c - 1] = '#'

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:

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

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

user output
(empty)