Задача на создание рамок в двумерном массиве. Не укладывается по времени и не всегда работает
Сейчас учусь в школе и программирую на Python 3.8. Практикую олимпиадные задачи, и попалась одна, как сначала показалось, лёгкая. Вроде код написал, протестировал на разных значениях. Всё отлично работает, но при вводе кода в систему оценки выдаёт 0 баллов из 100. По нескольким тестам говорит о неверном ответе, а по оставшимся тестам пишет, что прога не проходит по времени. Помогите найти ошибку в коде. Для помощи вы можете даже просто дать мне значения, при которых мой код бы не работал. А как максимум, вы могли бы мне помочь исправить программу, и заодно оптимизировать её для прохождения тестов на время. Код прилагаю внизу. Заранее спасибо за помощь!
Условия задачи: Поле для рисования представляет собой прямоугольник h × w пикселей, строки занумерованы сверху вниз от 1 до h, столбцы — слева направо от 1 до w. На поле последовательно рисуются n рамок, i-я рамка представляет собой границы прямоугольника с противоположными углами в точках (ri1, ci1) и (ri2, ci2). Требуется вывести получившееся изображение в виде h рядов по w символов, пискель, который не был использован при изображении рамок, следует вывести с использованием символа «.», а пиксели i-й рамки с использованием i-го символа латинского алфавита (первая рамка изображается буквами «a», вторая — «b», и т.д.)
Формат входных данных: Первая строка содержит целые числа h, w и n — размеры поля и число рамок (2 ≤ h, w ≤ 80, 1 ≤ n ≤ 26). Следующие n строк содержат по четыре целых числа каждая: ri1, ci1, ri2 и ci2 (1 ≤ ri1 < ri2 ≤ h, 1 ≤ ci1 < ci2 ≤ w).
Мой Код:
h, w, n = map(int, input().split())
mass = [["."] * w for i in range(h)]
dic = 'abcdefghijklmnopqrstuvwxyz'
nn = 0
while nn < n:
r1, c1, r2, c2 = map(int, input().split())
for i in range(c1 - 1, c2):
mass[r1 - 1][i] = dic[nn]
mass[r2 - 1][i] = dic[nn]
for i in range(r1, r2):
mass[i][r1-1] = dic[nn]
mass[i][r2] = dic[nn]
nn += 1
for i in mass:
print(''.join(i))
Ответы (1 шт):
h, w, n = map(int, input().split())
field = [['.'] * w for _ in range(h)]
for i in range(n):
x1, y1, x2, y2 = map(int, input().split())
x1 = min(max(0, x1), w - 1)
x2 = min(max(0, x2), w - 1)
y1 = min(max(0, y1), h - 1)
y2 = min(max(0, y2), h - 1)
x1, x2 = min(x1, x2), max(x1, x2)
y1, y2 = min(y1, y2), max(y1, y2)
letter = chr(ord('a') + i)
for j in range(x1, x2 + 1):
field[j][y1] = field[j][y2] = letter
for j in range(y1, y2 + 1):
field[x1][j] = field[x2][j] = letter
for line in field:
print(*line, sep='')
