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

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)]

for y, x in points:
    grid[y-1][x-1] = '*'

def draw_line(y1, x1, y2, x2):
    dy = y2 - y1
    dx = x2 - x1
    steps = max(abs(dy), abs(dx))
    for i in range(1, steps):
        yy = y1 + dy * i // steps
        xx = x1 + dx * i // steps
        if grid[yy][xx] == '*':
            continue
        if dy == 0:
            grid[yy][xx] = '='
        elif dx == 0:
            grid[yy][xx] = '|'
        elif (dy > 0 and dx > 0) or (dy < 0 and dx < 0):
            grid[yy][xx] = '\\'
        else:
            grid[yy][xx] = '/'

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

def inside_polygon(y, x):
    cnt = 0
    for i in range(k):
        y1, x1 = points[i]
        y2, x2 = points[(i+1) % k]
        y1 -= 1
        x1 -= 1
        y2 -= 1
        x2 -= 1
        if y1 == y2:
            continue
        if min(y1, y2) <= y < max(y1, y2):
            t = (y - y1) / (y2 - y1)
            x_cross = x1 + t * (x2 - x1)
            if x < x_cross:
                cnt += 1
    return cnt % 2 == 1

for i in range(n):
    for j in range(m):
        if grid[i][j] == '.' and inside_polygon(i, j):
            grid[i][j] = '#'

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)