- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
کوئرا در راستای توسعهی محصولات خود، یک فرودگاه راهاندازی کرده است. از شما میخواهیم برنامهای بنویسید تا بتواند بخشی از دستورات برج مراقبت را انجام دهد.
این فرودگاه باند پرواز، برای بلند شدن (take-off
) یا فرود آمدن (landing
) هواپیماها دارد. این باند از ۱ تا شماره گذاری شدهاند.
هر هواپیما یک رشته به طول ۱۰ و یکتا از ارقام به نام <ID>
دارد که آن هواپیما را به صورت یکتا مشخص میکند.
در هر لحظه، هر هواپیما، یکی از چهار وضعیت زیر را دارد:
- در فرودگاه کوئرا است و هیچ باندی را اشغال نکرده است.
- در فرودگاه کوئرا است ولی یکی از باندها را اشغال کرده و در حال بلند شدن است.
- در فرودگاه کوئرا است ولی یکی از باندها را اشغال کرده و در حال فرود آمدن است.
- در فرودگاه کوئرا نیست. (یعنی این هواپیما تا کنون دیده نشده یا از همین فرودگاه به پرواز در آمده است.)
میدانیم در ابتدا هواپیما در فرودگاه کوئرا است (وضعیت ۱) و <ID>
همهی این هواپیما را داریم.
برای برج مراقبت این فرودگاه چندین دستور میآید که از شما میخواهیم به آنها رسیدگی کنید. هر دستور به یکی از فرمتهای زیر است.
دستور TAKE-OFF
TAKE-OFF
این دستور یعنی هواپیمای با آیدی <ID>
قصد بلندشدن از فرودگاه را دارد.
- اگر این هواپیما در وضعیت
4
است پیامYOU ARE NOT HERE
را چاپ کنید. - اگر این هواپیما در وضعیت
3
است پیامYOU ARE LANDING NOW
را چاپ کنید. - اگر این هواپیما در وضعیت
2
است پیامYOU ARE TAKING OFF
را چاپ کنید. - اگر این هواپیما در وضعیت
1
است ولی هیچ باند خالی نداریم پیامNO FREE BOUND
را چاپ کنید. - در صورتی که هیچ کدام از اتفاقات بالا نیفتاد ابتدا وضعیت هواپیما را به
2
تغییر دهید و سپس هواپیما را به اولین (کمترین شماره) باند خالی انتقال دهید تا بلند شود.
دستور LANDING
LANDING
این دستور یعنی هواپیمای با آیدی <ID>
قصد نشستن در فرودگاه را دارد.
- اگر این هواپیما در وضعیت
1
است پیامYOU ARE HERE
را چاپ کنید. - اگر این هواپیما در وضعیت
2
است پیامYOU ARE TAKING OFF
را چاپ کنید. - اگر این هواپیما در وضعیت
3
است پیامYOU ARE LANDING NOW
را چاپ کنید. - اگر این هواپیما در وضعیت
4
است ولی هیچ باند خالی نداریم پیامNO FREE BOUND
را چاپ کنید. - در صورتی که هیچ کدام از اتفاقات بالا نیفتاد ابتدا وضعیت هواپیما را به
3
تغییر دهید و سپس هواپیما را به آخرین (بزرگترین شماره) باند خالی انتقال دهید تا فرود بیاید.
دستور PLANE-STATUS
PLANE-STATUS
این دستور وضعیت هواپیمای با آیدی <ID>
را در این لحظه درخواست میکند و شما باید شماره وضعیت این هواپیما را چاپ کنید.
دستور BAND-STATUS
BAND-STATUS
این دستور وضعیت باند <LINE>
را در این لحظه درخواست میکند و شما باید آیدی هواپیمایی که در این خط هست را چاپ کنید و اگر این باند آزاد است و هواپیمایی در آن نیست کلمه FREE
را چاپ کنید.
ورودی
در سطر اول ورودی دو عدد صحیح و آمده است که به ترتیب نشاندهندهی تعداد هواپیماهای داخل فرودگاه کوئرا و تعداد باندهای فرودگاه کوئرا است.
در سطر بعدی در هر سطر یک رشته ۱۰ رقمی که نشاندهندهی آیدی هواپیماهای داخل فرودگاه است.
در سطر بعدی عدد صحیح آمده است که نشاندهندهی تعداد دستورات است.
سپس در هر کدام از سطر بعدی یکی از دستورهای توضیح داده شده در کادر میآید.
خروجی
خروجی شامل حداکثر سطر است که در سطر ام خروجی متناسب با دستورها را چاپ میشود.
مثال
ورودی نمونه ۱
خروجی نمونه ۱
توضیحات نمونه ۱
در ابتدا ۳ هواپیما با آیدیهای 0000000001
، 0000000002
و 0000000003
در فرودگاه کوئرا قرار دارند. ۴ باند در این فرودگاه داریم که در ابتدا هر ۴تای آنها خالی هستند.
-
در دستور اول هواپیمای
0000000001
قصد بلند شدن دارد. با توجه به اینکه در این لحظه در فرودگاه کوئرا است و در وضعیت ۱ قرار دارد، میتواند وارد باند ۱ شود. (اولین باند خالی است.) -
در دستور دوم هواپیمای
0000000004
قصد فرود در فرودگاه کوئرا را دارد. باتوجه به اینکه این هواپیما را تاکنون ندیدهایم پس در فرودگاه کوئرا اکنون حضور ندارد و روی هوا است و میتواند در باند ۴ فرود بیاید. (آخرین باند خالی است) -
در دستور سوم وضعیت هواپیمای
0000000001
پرسیده میشود. این هواپیما در وضعیت ۲ (در حال بلند شدن) قرار دارد. پس عدد ۲ چاپ میشود. -
دستور چهارم وضعیت باند ۴ پرسیده میشود. در این باند هواپیمای
0000000004
قرار دارد و باید رشته0000000004
چاپ شود. -
در دستور پنجم هواپیمای
0000000002
قصد فرود آمدن در فرودگاه کوئرا را دارد ولی این هواپیما اکنون در فرودگاه کوئرا است؛ پس باید پیامYOU ARE HERE
چاپ شود.
ورودی نمونه ۲
خروجی نمونه ۲
توضیحات نمونه ۲
در ابتدا ۲ هواپیما با آیدیهای 1000000000
و 0002000000
در فرودگاه کوئرا قرار دارند. ۵ باند در این فرودگاه داریم که در ابتدا هر ۵تای آنها خالی هستند.
-
در دستور اول هواپیمای
0002000000
قصد بلند شدن دارد. با توجه به اینکه در این لحظه در فرودگاه کوئرا است و در وضعیت ۱ قرار دارد، میتواند وارد باند ۱ شود. (اولین باند خالی است.) -
در دستور دوم هواپیمای
1234567891
قصد فرود در فرودگاه کوئرا را دارد. باتوجه به اینکه این هواپیما را تاکنون ندیدهایم پس در فرودگاه کوئرا اکنون حضور ندارد و روی هوا است و میتواند در باند ۵ فرود بیاید. (آخرین باند خالی است) -
در دستور سوم وضعیت هواپیمای
1234567891
پرسیده میشود. این هواپیما در وضعیت ۳ (در حال فرود آمدن) قرار دارد. پس عدد ۳ چاپ میشود. -
در دستور چهارم وضعیت باند ۵ پرسیده میشود. در این باند هواپیمای
1234567891
قرار دارد و باید رشته1234567891
چاپ شود. -
در دستور پنجم هواپیمای
9876543219
قصد فرود در فرودگاه کوئرا را دارد. باتوجه به اینکه این هواپیما را تاکنون ندیدهایم پس در فرودگاه کوئرا اکنون حضور ندارد و روی هوا است و میتواند در باند ۴ فرود بیاید. (آخرین باند خالی است) -
در دستور ششم هواپیمای
5555555555
قصد فرود در فرودگاه کوئرا را دارد. باتوجه به اینکه این هواپیما را تاکنون ندیدهایم پس در فرودگاه کوئرا اکنون حضور ندارد و روی هوا است و میتواند در باند ۳ فرود بیاید. (آخرین باند خالی است) -
در دستور هفتم وضعیت باند ۲ پرسیده میشود. در این باند هیچ هواپیمایی وجود ندارد، پس کلمه
FREE
چاپ میشود. -
در دستور هشتم هواپیمای
1000000000
قصد بلند شدن دارد. با توجه به اینکه در این لحظه در فرودگاه کوئرا است و در وضعیت ۱ قرار دارد، میتواند وارد باند ۲ شود. (اولین باند خالی است.) -
در دستور نهم هواپیمای
3434343434
قصد فرود در فرودگاه کوئرا را دارد. باتوجه به اینکه این هواپیما را تاکنون ندیدهایم پس در فرودگاه کوئرا اکنون حضور ندارد و روی هوا است ولی هیچ باند خالی برای فرود وجود ندارد، پس عبارتNO FREE BOUND
چاپ میشود. -
در دستور دهم وضعیت هواپیمای
6666666666
پرسیده میشود. این هواپیما را تا کنون ندیدهایم پس در وضعیت ۴ قرار دارد. پس عدد ۴ چاپ میشود.
ارسال پاسخ برای این سؤال