المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:متفرقه:سوال های تمرینی دوره ی تابستان:سوال ۲

Stack

یک ماشین پشته‌ای شامل یک شمارنده، یک پشته و یک صفحه‌ی نمایش است. یک برنامه دنباله‌ای از دو دستور زیر است:

  • دستور Push: این دستور به مقدار شمارنده یک واحد اضافه می‌کند و سپس مقدار جدید شمارنده را به روی پشته اضافه می کند.
  • دستور Pop: این دستور بالاترین عدد ذخیره شده در پشته را از پشته حذف و در صفحه‌ی نمایش چاپ می‌کند. اگر پشته خالی باشد این دستور قانونی نمی‌باشد و ماشین خراب می‌شود.

در ابتدای اجرای هر برنامه، پشته و صفحه‌ی نمایش ماشین خالی هستند و مقدار شمارنده برابر صفر است.

جایگشتی از اعداد ۱ تا $n$ داده شده است. برنامه‌ای به زبان این ماشین بنویسید که (بدون خراب شدن) در صفحه‌ی نمایش خود، این جایگشت را چاپ کند.

ورودی

  • در سطر اول ورودی عدد $n$ ($n \leq 10^5$) آمده است.
  • در سطر بعد $n$ عدد آمده‌اند که نمایش دهنده‌ی جایگشتی هستند که قرار است در صفحه‌ی نمایش ماشین چاپ شود.

خروجی

  • در صورتی که این‌کار امکان‌پذیر نیست، در تنها سطر خروجی عدد $-1$ را چاپ کنید.
  • در غیر این صورت، در یک سطر دستورات برنامه را بنویسید. به ازای هر دستور یکی از دو حرف U و P را چاپ کنید. U نشان‌دهنده‌ی Push و P نشان‌دهنده‌ی Pop است.

محدودیت‌ها

  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

ورودی و خروجی نمونه

ورودی نمونه خروجی نمونه
4
3 2 1 4
UUUPPPUP

پاسخ

منتظر پر کردن این قسمت توسط علاقمندان هستیم.


ابزار صفحه