پرش به محتویات

تمرین ۱۰: ادغامگرِ گزارش‌ها (شبیه cat با > و >>)

صورت سؤال

یک ابزار ساده دارید که با منطق دستور cat و تغییر مسیر (> و >>) گزارش‌ها را می‌سازد. شما باید خروجی نهایی فایل final.txt را بعد از اجرای دستورها به دست آورید.

دستورهای ممکن:

  • touch f اگر فایل f وجود نداشته باشد آن را خالی می‌سازد؛ اگر وجود داشته باشد، محتوا تغییر نمی‌کند.
  • write f s محتوای فایل f را دقیقاً برابر یک خط s قرار می‌دهد (بازنویسی کامل).
  • append f s یک خط s را به انتهای فایل f اضافه می‌کند.
  • merge a b > c محتوای فعلی فایل a سپس محتوای فعلی فایل b را پشت سر هم در نظر بگیرید و نتیجه را کامل روی فایل c بنویسید (بازنویسی کامل).
  • merge a b >> c همان ادغام است، با این تفاوت که نتیجه باید به انتهای فایل c اضافه شود.

نکته: اگر فایل‌های a یا b وجود نداشتند، در عملیات merge به عنوان فایل خالی در نظر بگیرید.

در پایان، اگر final.txt وجود نداشت یا خالی بود باید دقیقاً EMPTY چاپ شود.

ورودی

در خط اول عدد q تعداد دستورها آمده است.
در q خط بعدی، هر خط یکی از دستورهای بالا است.

نام فایل‌ها فقط شامل حروف انگلیسی، عدد، _ و . است.
s یک متن یک‌خطی است که می‌تواند شامل فاصله باشد و تا انتهای خط ادامه دارد.

خروجی

محتوای نهایی final.txt را چاپ کنید (هر خط جداگانه).
اگر فایل وجود نداشت یا خالی بود، فقط EMPTY چاپ کنید.

محدودیت‌ها

  • 1 ≤ q ≤ 2×10^4
  • طول s حداکثر 100 کاراکتر است.

نمونه

ورودی نمونه

10
write a.txt A1
append a.txt A2
write b.txt B1
touch final.txt
merge a.txt b.txt > final.txt
append b.txt B2
merge a.txt b.txt >> final.txt
touch a.txt
write a.txt NEW
merge a.txt missing.txt >> final.txt

خروجی نمونه

A1
A2
B1
A1
A2
B1
B2
NEW