eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Директиви include

Директиви include

Багато мов містять спеціальну директиву, яка вставляє вміст одного файлу всередину іншого. Часто такі директиви називаються include. У цій задачі вам потрібно реалізувати функціональність найпростішого препроцесора, який опрацьовує цю інструкцію. Вам задано набір текстових файлів. Рядок файлу виду "\textbf{#include} <\textbf{ім'я-файлу}>" повинен бути замінений на вміст відповідного файлу (ім'я файлу у директиві может бути як абсолютним так і відносним; відносний шлях завжди починається з імені файлу або директорії або спецпослідовності "\textbf{..}"). У цьому рядку можуть бути довільні незначущіе пропуски, які не розривають елементи include та ім'я-файлу. Якщо файлу з іменем ім'я-файлу не існує, то цей рядок повинен бути просто вирізаним з тексту файлу. \InputFile Вхідний файл складається з послідовності описів файлів. Кожен опис починається з рядка, який містить шлях до файлу у форматі файлових систем Windows. Шлях задано абсолютно і не містить пропусків і символів "\textbf{\textbackslash}", які ідуть підряд. У якостві елементу шляху може бути використана спецпослідовність "\textbf{..}", яка позначає перехід у батьківську директорію. Інші спецпослідовності не використовуються. Ім'я довільних директорії і файлу скаладається з латинських букв, цифр і символу "\textbf{.}". Порівнянння імен файлів слід проводити без врахування регістру. Далі йде вміст файлу. Послідовність виду "\textbf{^Z}" позначає кінець файлау. Ця послідовність завжди записана у окремому рядку, тобто кожен рядок файлу, включаючи останній, завершується переводенням рядка. Вхідний файл містить не менше одного опису. Розмір файлу не перевищує \textbf{40} KB. Довжина кожного рядка файлу не перевищує \textbf{1000} символів. Усі імена файлів у тесті (включаючи ті, що зустрічаються у директивах \textbf{include}) -- це коректні абсолютні або відносні шляхи. \OutputFile Виведіть вміст першого файлу після опрацювання препроцесором. Гарантується, що розмір виведення не перевищить \textbf{400} KБ. Якщо опрацювання директив призводить до циклічного процесу -- виведіть рядок "\textbf{Too long file}". \textbf{Приклад}
Ліміт часу 4 секунди
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
c:\files\first.txt
#define MAX_N 1024
#include <second.txt>
last line
^Z
c:\FILES\..\files\second.txt
included file
#include <..\files\third.txt>
^Z
c:\FILES\THIRD.txt
included file
^Z
Вихідні дані #1
#define MAX_N 1024
included file
included file
last line