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