| Task: | Monikulmio |
| Sender: | lukarantalainen |
| Submission time: | 2025-11-04 18:52:58 +0200 |
| Language: | Python3 (CPython3) |
| Status: | READY |
| Result: | 76 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 76 |
| test | verdict | time | score | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.02 s | 10 | details |
| #2 | ACCEPTED | 0.02 s | 10 | details |
| #3 | ACCEPTED | 0.02 s | 7 | details |
| #4 | ACCEPTED | 0.02 s | 7 | details |
| #5 | ACCEPTED | 0.02 s | 7 | details |
| #6 | ACCEPTED | 0.02 s | 7 | details |
| #7 | ACCEPTED | 0.05 s | 7 | details |
| #8 | ACCEPTED | 0.04 s | 7 | details |
| #9 | ACCEPTED | 0.10 s | 7 | details |
| #10 | ACCEPTED | 0.69 s | 7 | details |
Code
s = input()
inputlist = [int(x) for x in s.split()]
n = inputlist[0]
m = inputlist[1]
k = inputlist[2]
for i in range(int(k)):
s = input()
for item in s.split():
inputlist.append(int(item))
xlist = [x for index, x in enumerate(inputlist) if index>2 and index%2!=0]
ylist = [y for index, y in enumerate(inputlist) if index>2 and index%2==0]
coordlist = [(x, y) for x, y in zip(xlist, ylist)]
def map_borders():
rowlist = []
collist = []
backslash = []
slash = []
prevcoord = coordlist[0]
for i in range(1, len(coordlist)+1):
if i >= len(coordlist):
currentcoord = coordlist[0]
prevcoord = coordlist[-1]
else:
currentcoord = coordlist[i]
if currentcoord[0] == prevcoord[0]:
if prevcoord[1] < currentcoord[1]:
for x in range(prevcoord[1]+1, currentcoord[1]):
currentcoords = (currentcoord[0], x)
rowlist.append(currentcoords)
else:
for x in range(currentcoord[1], prevcoord[1]):
currentcoords = (currentcoord[0], x)
rowlist.append(currentcoords)
elif currentcoord[1] == prevcoord[1]:
if prevcoord[0] < currentcoord[0]:
for y in range(prevcoord[0]+1 , currentcoord[0]):
currentcoords = (y, currentcoord[1])
collist.append(currentcoords)
else:
for y in range(currentcoord[0], prevcoord[0]):
currentcoords = (y, currentcoord[1])
collist.append(currentcoords)
elif prevcoord[1] < currentcoord[1]: #to the right
distance = abs(prevcoord[0]-currentcoord[0])
if prevcoord[0] < currentcoord[0]: #down right \
for i in range(1, distance):
currentcoords = (prevcoord[0]+i, prevcoord[1]+i)
backslash.append(currentcoords)
elif prevcoord[0] > currentcoord[0]: #up right /
for i in range(1, distance):
currentcoords = (prevcoord[0]-i, prevcoord[1]+i)
slash.append(currentcoords)
elif prevcoord[1] > currentcoord[1]: #to the left
distance = abs(prevcoord[0]-currentcoord[0])
if prevcoord[0] < currentcoord[0]: #down left /
for i in range(1, distance):
currentcoords = (prevcoord[0]+i, prevcoord[1]-i)
slash.append(currentcoords)
elif prevcoord[0] > currentcoord[0]: #up left \
for i in range(1, distance):
currentcoords = (prevcoord[0]-i, prevcoord[1]-i)
backslash.append(currentcoords)
prevcoord = currentcoord
return [rowlist, collist, backslash, slash]
def draw_rows():
cont = map_borders()
rowlist = cont[0]
collist = cont[1]
backslash = cont[2]
slash = cont[3]
for row in range(1, n+1):
currentrow = ["." for x in range(m)]
border = False
for col in range(1, m+1):
if (row, col) in coordlist:
currentrow[col-1] = "*"
elif (row, col) in rowlist:
currentrow[col-1] = "="
elif (row, col) in collist:
currentrow[col-1] = "|"
elif (row, col) in slash:
currentrow[col-1] = "/"
elif (row, col) in backslash:
currentrow[col-1] = '\\'
if border == False:
if currentrow[col-1] == "*" or currentrow[col-1] == "=" or currentrow[col-1] == "|" or currentrow[col-1] == "/" or currentrow[col-1] == "\\":
if ((row-1, col) in collist or (row-1, col-1) in collist or (row-1, col+1) in collist or (row-1, col) in coordlist
or (row-1, col) in slash or (row-1, col-1) in slash or (row-1, col+1) in slash or (row-1, col-1) in coordlist
or (row-1, col-1) in backslash or (row-1, col) in backslash or (row-1, col+1) in backslash or (row-1, col+1) in coordlist):
border = True
elif border == True:
if currentrow[col-1] == ".":
currentrow[col-1] = "#"
elif currentrow[col-1] == "*" or currentrow[col-1] == "|" or currentrow[col-1] == "/" or currentrow[col-1] == "\\":
border = False
print("".join(currentrow))
draw_rows()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 |
|---|
| ................................. |
Feedback: Lines are drawn correctly. Incorrect fill character on row 5, col 33: expected '#', got '.'
Test 4 (public)
Verdict: ACCEPTED
| input |
|---|
| 20 40 14 5 12 5 25 8 28 13 28 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Lines are drawn correctly. Incorrect fill character on row 5, col 26: expected '#', got '.'
Test 5 (public)
Verdict: ACCEPTED
| input |
|---|
| 20 40 12 3 20 7 16 7 9 11 13 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Lines are drawn correctly. Incorrect fill character on row 15, col 17: expected '#', got '.'
Test 6 (public)
Verdict: ACCEPTED
| input |
|---|
| 9 35 33 2 3 2 8 4 8 4 5 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Lines are drawn correctly. Incorrect fill character on row 4, col 19: expected '#', got '.'
Test 7 (public)
Verdict: ACCEPTED
| input |
|---|
| 30 100 69 6 10 6 14 7 14 7 18 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Lines are drawn correctly. Incorrect fill character on row 14, col 11: expected '#', got '.'
Test 8 (public)
Verdict: ACCEPTED
| input |
|---|
| 40 60 192 11 3 11 5 10 6 11 7 ... |
| correct output |
|---|
| ................................. |
| user output |
|---|
| ................................. |
Feedback: Lines are drawn correctly. Incorrect fill character on row 7, col 24: expected '#', got '.'
Test 9 (public)
Verdict: ACCEPTED
| input |
|---|
| 50 100 142 1 1 1 7 1 11 1 14 ... |
| correct output |
|---|
| *=====*===*==*................... |
| user output |
|---|
| *=====*===*==*................... |
Feedback: Lines are drawn correctly. Incorrect fill character on row 2, col 11: expected '#', got '.'
Test 10 (public)
Verdict: ACCEPTED
| input |
|---|
| 100 100 1000 10 1 4 7 1 4 1 9 ... |
| correct output |
|---|
| ...*====*........................ |
| user output |
|---|
| ...*====*........................ |
Feedback: Lines are drawn correctly. Incorrect fill character on row 4, col 36: expected '.', got '#'
