Задача - письмо в службу поддержки - вылетает ошибка

smfn

Новичок
Пользователь
Янв 18, 2024
1
0
1
Окошко для сообщения на сайте техподдержки имеет ширину a, то есть в одной строке помещается не более a символов (не считая символа перевода строки, то есть разместить строку длины a+1, в которой последний символ — перевод строки, возможно).

Также для того, чтобы сообщение было принято, оно должно быть корректно отформатировано, а именно:
  1. В одной строке допускается наличие не более b слов,
  2. Соседние слова в строке разделяются ровно одним пробелом.
  3. Каждая строка должна завершаться ровно одним переводом строки.
  4. Первый символ строки, а также символ перед переводом строки не могут быть пробелами.
Если очередное слово можно добавить в текущую строку так, чтобы выполнялись все предыдущие пункты и строка не переполнилась, то его необходимо в неё добавить. Если эти критерии не выполнены, строка не принимается.

Формат ввода:
В первой строке задано целое число aa — ширина окошка (1≤a≤100). Во второй строке задано целое число b — максимальное количество слов в строке (1≤b≤60). Далее следует набранный текст — не более 1000 слов, состоящих из строчных латинских букв, по одному слову в строке. Гарантируется, что длина слова не превосходит aa. Конец ввода заканчивается словом “0” (единичный ноль), которое не включается в сообщение.

Формат вывода:
Выведите отформатированное сообщение. Учтите, что в этой задаче сравнение ответа с правильным производится побайтово (то есть с учётом пробелов и переводов строк).

Пример:
Ввод:
10
2
contora
is
doing
well
0

Вывод:
contora is
doing well

Мое решение:

Python:
a = int(input())  # Ширина окна
b = int(input())  # Максимальное количество слов в строке

# Считываем текст по словам, сохраненным по одному слову на строке
words = []
while True:
    word = input()
    if word == '0':
        break
    words.append(word)

result = []
current_line = []
valid = all(len(word.split()) == 1 for word in words)
if valid:
    for word in words:
        if not current_line and len(word) <= a:
            current_line.append(word.rstrip().lstrip())
        elif current_line and len(current_line) <= b and len(" ".join(current_line + [word])) <= a:
            current_line.append(word.rstrip().lstrip())
        else:
            result.append(" ".join(current_line))
            current_line = [word]

if current_line:
    result.append(" ".join(current_line))

for line in result:
    print(line)

Вылетает с ошибкой Wrong answer. Уже несколько часов не могу понять, что не так, если может кто подсказать, что реализовано не так или что я не заметил буду благодарен.
 
Последнее редактирование:

Форум IT Специалистов