Submission details
Task:Monikulmio
Sender:Toitsu
Submission time:2025-10-30 13:24:41 +0200
Language:Python3 (PyPy3)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED100
Test results
testverdicttimescore
#1ACCEPTED0.04 s10details
#2ACCEPTED0.07 s10details
#3ACCEPTED0.08 s10details
#4ACCEPTED0.07 s10details
#5ACCEPTED0.07 s10details
#6ACCEPTED0.07 s10details
#7ACCEPTED0.11 s10details
#8ACCEPTED0.10 s10details
#9ACCEPTED0.10 s10details
#10ACCEPTED0.31 s10details

Code

initial_info = input()

height, width, tip_count = initial_info.split(" ")
height = int(height)
width = int(width)
tips = []

for i in range(int(tip_count)):
    a, b = input().split(" ")
    tips.append((int(b), int(a)))

grid = []

for x in range(1, height + 1):
    row = []

    for y in range(1, width + 1):
        if (y, x) in tips:
            row.append("*")
        else:
            row.append(".")
    
    grid.append(row)


# connect the tips
for i in range(len(tips)):
    x_a, y_a = tips[i]
    x_b, y_b = tips [0 if i == len(tips) - 1 else i + 1]

    x_val = x_a - x_b
    y_val = y_a - y_b

    direction = ""
    distance = max(abs(x_val), abs(y_val)) - 1

    if x_val > 0 and y_val < 0:
        direction = "left_down"
    elif x_val < 0 and y_val < 0:
        direction = "right_down"
    elif x_val < 0 and y_val > 0:
        direction = "right_up"
    elif x_val > 0 and y_val > 0:
        direction = "left_up"
    elif x_val > 0 and y_val == 0:
        direction = "left"
    elif x_val < 0 and y_val == 0:
        direction = "right"
    elif x_val == 0 and y_val < 0:
        direction = "down"
    elif x_val == 0 and y_val > 0:
        direction = "up"
    
    x_a -= 1
    y_a -= 1

    for j in range(1, distance + 1):
        if direction == "left_down":
            grid[y_a + j][x_a - j] = "/"
        elif direction == "right_down":
            grid[y_a + j][x_a + j] = "\\"
        elif direction == "right_up":
            grid[y_a - j][x_a + j] = "/"
        elif direction == "left_up":
            grid[y_a - j][x_a - j] = "\\"
        elif direction == "left":
            grid[y_a][x_a - j] = "="
        elif direction == "right":
            grid[y_a][x_a + j] = "="
        elif direction == "down":
            grid[y_a + j][x_a] = "|"
        elif direction == "up":
            grid[y_a - j][x_a] = "|"


for y in range(height):
    for x in range(width):
        px = x + 0.5
        py = y + 0.5
        inside = False
        n = len(tips)
        
        for k in range(n):
            x_a, y_a = tips[k]
            x_b, y_b = tips[(k + 1) % n]

            if (y_a > py) != (y_b > py):
                inter_x = x_a + (x_b - x_a) * (py - y_a) / (y_b - y_a)
                if inter_x > px:
                    inside = not inside

        if grid[y][x] == "." and inside:
            grid[y][x] = "#"


# print the grid
for row in grid:
    for element in row:
        print(element, end="")
    
    print("")

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
...*====*........................