Codeforces Round 114 (Div. 2) |
---|
Закончено |
Давайте немного окунемся в одну из самых интересных областей магии — написание заклинаний. Обучение этой интересной, но сложной науке — дело крайне хлопотное, поэтому сегодня Вы не будете учить магические слова, а лишь познакомитесь с основными правилами написания заклинаний.
Каждое заклинание состоит из нескольких строк. Строка, первым непробельным символом которой является символ «#», называется усиливающей строкой и отвечает за мощь заклинания. Остальные строки являются обычными и определяют действие заклинания.
Вам на глаза попался текст некоторого заклинания. Заклинание оказалось слишком длинным, чтобы вы смогли понять его смысл. Поэтому Вы хотите сделать его как можно короче, не меняя смысла.
Единственный способ сократить заклинание, известный вам, — это удаление некоторых пробелов и переводов строк. Известно, что в тексте любого заклинания пробелы несут какую-то смысловую нагрузку только в усиливающих строках, поэтому все пробелы в остальных строках необходимо удалить. Переводы строк также не важны, если ни одна из двух разделяемых строк не является усиливающей. Таким образом, если две подряд идущие строки не являются усиливающими, то их необходимо соединить в одну (то есть к первой строке приписать вторую). Удалять пробелы в усиливающих строках и объединять их с чем-либо запрещено.
Обратите внимание, что пустые строки должны обрабатываться так же, как и все остальные: они должны быть объединены с соседними строками, не являющимися усиливающими, или сохранены в выходных данных, если они окружены с обеих сторон усиливающими (то есть строчка выше, если такая есть, является усиливающей, и строчка ниже, если такая есть, тоже является усиливающей).
Пока это все удаления лишних символов, которые надо сделать (да-да, перевод строки тоже символ).
На вход вам дан текст заклинания, который необходимо уменьшить. Удалите из него лишние символы и выведите результат.
На вход дано несколько строк. Все символы в строках имеют коды от 32 до 127 (включительно). Обращаем ваше внимание, что строки могут начинаться или заканчиваться одним или более пробелами. Объем ввода не превосходит 1048576( = 220) байт. Переводы строк входят в этот объем.
Переводом строки в операционной системе Windows, используемой на тестирующем компьютере, является последовательность символов с кодами #13#10. Гарантируется, что после каждой строки входных данных находится перевод строки. В частности последними символами входных данных является перевод строки. Обратите внимание, что перевод строки является концом строки, а не началом следующей.
Гарантируется, что во входных данных есть хотя бы один символ отличный от перевода строки.
Рекомендуется организовывать ввод-вывод построчно, в таком случае переводы строк корректно обработаются средствами языка.
Выведите заклинание, из которого удалены все лишние символы. Обращаем ваше внимание, что после каждой строки вывода также должен идти перевод строки.
Осторожно, в задаче в качестве проверки ответа на правильность используется побайтовое сравнение ответа с ответом жюри. Поэтому все пробелы и переводы строк имеют значение.
# include <cstdio>
using namespace std;
int main ( ){
puts("Hello # World"); #
#
}
# include <cstdio>
usingnamespacestd;intmain(){puts("Hello#World");#
#
}
#
#
#
#
В первом примере усиливающими строками являются 1 и 7. Поэтому строки со 2 по 6 объединены, из них удалены все пробелы.
Во втором примере усиливающими являются 1 и 3 строки. Поэтому не объединено ничего.
Название |
---|