| Task: | Monikulmio |
| Sender: | AapoL |
| Submission time: | 2025-10-29 10:18:27 +0200 |
| Language: | Python3 (PyPy3) |
| Status: | READY |
| Result: | 10 |
| group | verdict | score |
|---|---|---|
| #1 | WRONG ANSWER | 10 |
| test | verdict | time | score | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.05 s | 10 | details |
| #2 | WRONG ANSWER | 0.08 s | 0 | details |
| #3 | WRONG ANSWER | 0.08 s | 0 | details |
| #4 | WRONG ANSWER | 0.08 s | 0 | details |
| #5 | WRONG ANSWER | 0.08 s | 0 | details |
| #6 | WRONG ANSWER | 0.07 s | 0 | details |
| #7 | WRONG ANSWER | 0.13 s | 0 | details |
| #8 | WRONG ANSWER | 0.12 s | 0 | details |
| #9 | WRONG ANSWER | 0.13 s | 0 | details |
| #10 | WRONG ANSWER | 0.14 s | 0 | details |
Code
from math import sqrt, isclose
text = input()
# Ruudukon korkeus, leveys ja monikulmion kärkipisteiden määrä
split = text.split()
n, m, k = int(split[0]), int(split[1]), int(split[2])
#coords = []
#for i in range(k):
# coords_temp = input()
# coords_split = coords_temp.split()
# #print(coords_split)
# coords_1 = int(coords_split[0])
# coords_2 = int(coords_split[1])
# coords_final = [coords_1, coords_2]
# coords.append(coords_final)
# #print(coords)
coords = [[5, 2], [2, 5], [5, 8], [7, 8], [7, 2]]
# Copy paste algorithm
def point_in_polygon(point, polygon):
num_vertices = len(polygon)
x, y = point[1], point[0]
inside = False
# Store the first point in the polygon and initialize the second point
p1 = polygon[0]
# Loop through each edge in the polygon
for i in range(1, num_vertices + 1):
# Get the next point in the polygon
p2 = polygon[i % num_vertices]
# Check if the point is above the minimum y coordinate of the edge
if y > min(p1[0], p2[0]):
# Check if the point is below the maximum y coordinate of the edge
if y <= max(p1[0], p2[0]):
# Check if the point is to the left of the maximum x coordinate of the edge
if x <= max(p1[1], p2[1]):
# Calculate the x-intersection of the line connecting the point to the edge
x_intersection = (y - p1[0]) * (p2[1] - p1[1]) / (p2[0] - p1[0]) + p1[1]
# Check if the point is on the same line as the edge or to the left of the x-intersection
if p1[1] == p2[1] or x <= x_intersection:
# Flip the inside flag
inside = not inside
# Store the current point as the first point for the next iteration
p1 = p2
# Return the value of the inside flag
return inside
def distance(a, b):
return sqrt((a[1] - b[1])**2 + (a[0] - b[0])**2)
def is_between(a, b, c):
if distance(a,c) + distance(c,b) == distance(a,b):
if a[0] == b[0]:
print("=", end="")
return True
elif a[1] == b[1]:
print("|", end="")
return True
elif isclose((distance(a,c) + distance(c,b)), distance(a,b)):
if a[0] < b[0]:
print("\\", end="")
elif a[0] > b[0]:
print("/", end="")
return True
def is_line(point):
for i in range(len(coords)):
start = coords[i]
end = coords[(i + 1) % len(coords)]
if is_between(start, end, point):
return True
return False
for i in range(n):
for j in range(m):
if [i+1, j+1] in coords:
print("*", end="")
elif is_line([i+1, j+1]):
print("", end="")
elif point_in_polygon([i+1, j+1], coords):
print("#", end="")
else:
print(".", 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: WRONG ANSWER
| input |
|---|
| 20 40 4 5 10 5 30 15 30 15 10 |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Incorrect character on row 2, col 5: expected '.', got '*'
Test 3 (public)
Verdict: WRONG ANSWER
| input |
|---|
| 20 40 29 8 7 13 2 14 2 9 7 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Incorrect character on row 2, col 5: expected '.', got '*'
Test 4 (public)
Verdict: WRONG ANSWER
| input |
|---|
| 20 40 14 5 12 5 25 8 28 13 28 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Incorrect character on row 2, col 5: expected '.', got '*'
Test 5 (public)
Verdict: WRONG ANSWER
| input |
|---|
| 20 40 12 3 20 7 16 7 9 11 13 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Incorrect character on row 2, col 5: expected '.', got '*'
Test 6 (public)
Verdict: WRONG ANSWER
| input |
|---|
| 9 35 33 2 3 2 8 4 8 4 5 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Incorrect character on row 2, col 3: expected '*', got '.'
Test 7 (public)
Verdict: WRONG ANSWER
| input |
|---|
| 30 100 69 6 10 6 14 7 14 7 18 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Incorrect character on row 2, col 5: expected '.', got '*'
Test 8 (public)
Verdict: WRONG ANSWER
| input |
|---|
| 40 60 192 11 3 11 5 10 6 11 7 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Incorrect character on row 2, col 5: expected '.', got '*'
Test 9 (public)
Verdict: WRONG ANSWER
| input |
|---|
| 50 100 142 1 1 1 7 1 11 1 14 ... |
| correct output |
|---|
| *=====*===*==*................... |
| user output |
|---|
| ................................. |
Feedback: Incorrect character on row 1, col 1: expected '*', got '.'
Test 10 (public)
Verdict: WRONG ANSWER
| input |
|---|
| 100 100 1000 10 1 4 7 1 4 1 9 ... |
| correct output |
|---|
| ...*====*........................ |
| user output |
|---|
| ................................. |
Feedback: Incorrect character on row 1, col 4: expected '*', got '.'
