ساعت
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
ساعت
دقیقه
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
دقیقه
ثانیه
۹۰۱۲۳۴۵۶۷۸۹۰۹۰۱۲۳۴۵۶۷۸۹۰
ثانیه
  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

از شما می‌خواهیم، قسمتی از سایت برای ارائه فیلم‌های سینمایی را طراحی کنیم. قرار است تعدادی فیلم به سایت اضافه شود، هر بازیگر یک پروفایل دارد که به فیلم‌هایی که در آن بازی کرده را نشان می‌دهد. هر فیلم هم یک پروفایل دارد که جزئیات آن مثل اسم، سال انتشار، کیفیت فیلم و لیست بازیگران آن را نشان می‌دهد.

ساختار دستورها به این صورت است که ابتدا بازیگرها و فیلم‌ها روی سایت تعریف می‌شوند، سپس در دستورهایی به شما گفته می‌شود که این بازیگر در این فیلم بازی کرده است و شما باید این مورد را ثبت کنید. همچنین ممکن است پروفایل یک بازیگر یا فیلم از سایت حذف شود و شما نباید دیگر آن‌ها را نشان دهید.

فیلم‌ها باید قابلیت دسته بندی شدن داشته بر اساس ویژگی‌هایشان داشته باشند.

دستورها

دستور ADD-MOVIE


فرمت کلی دستور به صورت زیر است:

ADD-MOVIE <title> <date> <quality>
Plain text

یعنی فیلمی با نام <title>، محصول سال <date> با کیفیت <quality> روی سایت آپلود شده است.

رشته‌ی <title> باید حداکثر ۲۰ کاراکتر باشد. رشته‌ی <date> باید یک عدد صحیح بین 1888 تا 2024 باشد. رشته‌‌ی <quality> باید یکی از مقادیر 720p، 1080p یا 4K باشد.

بعد از اضافه شدن هر فیلم باید یک عدد نسبت دهید که به آن <movie-id> می‌گوییم. برای هر فیلم، این عدد برابر تعداد فیلم‌هایی است که قبل از این فیلم با دستور ADD-MOVIES با موفقیت اضافه شده‌اند. (مهم نیست اگر بعداً پاک شده باشند.)

یعنی اولین فیلم که بدون خطا اضافه می‌شود، <movie-id> آن برابر ۰، دومین فیلم ‍۱، سومین فیلم ۲ و... خواهد بود.

  • اگر رشته‌ی <title> قابل قبول نبود، خطای invalid title را چاپ کنید.
  • اگر رشته‌ی <date> قابل قبول نبود، خطای invalid date را چاپ کنید.
  • اگر رشته‌ی <quality> قابل قبول نبود، خطای invalid quality را چاپ کنید.
  • در صورتی که هیچکدام از خطاهای بالا پیش نیامد، پیام added successfully <movie-id> را چاپ کنید، که به‌جای <movie-id> مقدار آن را قرار می‌دهید.

دستور REM-MOVIE


فرمت کلی دستور به صورت زیر است:

REM-MOVIE <movie-id>
Plain text

این دستور یعنی می‌خواهیم فیلم <movie-id> از سایت حذف شود.

  • اگر فیلمی با این <movie-id> اکنون روی سایت وجود ندارد، خطای invalid movie id را چاپ کنید.
  • در صورتی که خطای بالا پیش نیامد، پیام removed successfully <movie-id> را چاپ کنید، که به‌جای <movie-id> مقدار آن را قرار می‌دهید.

دستور ADD-CAST


فرمت کلی دستور به صورت زیر است:

ADD-CAST <name>
Plain text

این دستور یعنی می‌خواهیم بازیگری با نام <name> را به سایت اضافه کنیم.

رشته‌ی <name> باید حداکثر ۲۰ کاراکتر باشد و فقط شامل حروف بزرگ و کوچک انگلیسی باشد.

بعد از اضافه شدن هر بازیگر باید یک عدد نسبت دهید که به آن <cast-id> می‌گوییم. مشابه <movie-id>، برای هر بازیگر، این عدد برابر تعداد بازیگرهایی است که قبل از این بازیگر با این دستور با موفقیت اضافه شده‌اند. (مهم نیست اگر بعداً پاک شده باشند.)

  • اگر رشته‌ی <name> قابل قبول نبود، خطای invalid name را چاپ کنید.
  • در صورتی که هیچکدام از خطاهای بالا پیش نیامد، پیام added successfully <cast-id> را چاپ کنید، که به‌جای <cast-id> مقدار آن را قرار می‌دهید.

دستور REM-CAST


فرمت کلی دستور به صورت زیر است:

REM-CAST <cast-id>
Plain text

این دستور یعنی می‌خواهیم بازیگری با نام <cast-id> را از سایت حذف کنیم.

  • اگر بازیگری با این <cast-id> اکنون روی سایت وجود ندارد، خطای invalid cast id را چاپ کنید.
  • در صورتی که خطای بالا پیش نیامد، پیام removed successfully <cast-id> را چاپ کنید، که به‌جای <cast-id> مقدار آن را قرار می‌دهید.

دستور SHOW-MOVIE


فرمت کلی دستور به صورت زیر است:

SHOW-MOVIE <movie-id>
Plain text

در این دستور به شما یک <movie-id> داده می‌شود و از شما می‌خواهیم در فرمت زیر مشخصات این فیلم را چاپ کنید:

{title:"title", date:"date", quality:"quality", casts:["cast-id-1", "cast-id-2", ...]}
Plain text

که در داخل "، مقدارهای title، date، quality قرار می‌گیرد. توجه کنید cast-idها باید به ترتیب از کوچک به بزرگ باشند.

اگر فیلمی با این <movie-id> وجود ندارد. خطای invalid movie id را چاپ کنید.

دستور SHOW-CAST


فرمت کلی دستور به صورت زیر است:

SHOW-CAST <cast-id>
Plain text

در این دستور به شما یک <cast-id> داده می‌شود و از شما می‌خواهیم در فرمت زیر مشخصات این بازیگر را چاپ کنید:

{name:"name", movies:["movie-id-1", "movie-id-2", ...]}
Plain text

که در داخل "، مقدار name قرار می‌گیرد. توجه کنید movie-idها باید به ترتیب از کوچک به بزرگ باشند.

اگر بازیگری با این <cast-id> وجود ندارد. خطای invalid cast id را چاپ کنید.

دستور LINK-CAST-TO-MOVIE


فرمت کلی دستور به صورت زیر است:

LINK-CAST-TO-MOVIE <cast-id> <movie-id> 
Plain text

این دستور یعنی بازیگر با شماره‌ی <cast-id> در فیلم <movie-id> حضور داشته و باید این دو را به هم متصل کنید.

  • اگر بازیگری با این <cast-id> اکنون روی سایت وجود ندارد، خطای invalid cast id را چاپ کنید.
  • اگر فیلمی با این <movie-id> اکنون روی سایت وجود ندارد، خطای invalid movie id را چاپ کنید.
  • اگر قبلاً این بازیگر به این فیلم اضافه متصل شده بود خطای already linked را چاپ کنید.
  • در صورتی که هیچ کدام از خطاهای بالا پیش نیامد، پیام successfully linked <cast-id> to <movie-id> را چاپ کنید، که به‌جای <movie-id> و <cast-id> مقدار آن را قرار می‌دهید.

دستور FILTER-MOVIES-BY-TITLE


فرمت کلی دستور به صورت زیر است:

FILTER-MOVIES-BY-TITLE <pattern>
Plain text

در این دستور باید movie-id تمام فیلم‌هایی که عنوان آن‌ها با <pattern> شروع می‌شود را به ترتیب صعودی که داخل [] قرار دارند و با , از هم جدا شده‌اند چاپ کنید. (دقیقاً مشابه نمونه‌ها)

دستور FILTER-MOVIES-BY-DATE


فرمت کلی دستور به صورت زیر است:

FILTER-MOVIES-BY-DATE <ineq> <n>
Plain text

در این دستور باید movie-id تمام فیلم‌هایی که تاریخ انتشار آن‌ها با <date-pattern> سازگار است را به ترتیب صعودی که داخل [] قرار دارند و با , از هم جدا شده‌اند چاپ کنید. (دقیقاً مشابه نمونه‌ها)

مقدار <ineq> <n> یکی از حالت‌های>= n، > n ،= n، < n یا <= n را دارد که به‌جای n یک عدد صحیح قرار می‌گیرد و شما باید همه‌ی فیلم‌هایی که data آن‌ها در سمت چپ این رابطه قرار می‌گیرد و حاصل درست می‌شود را چاپ کنید.

دستور FILTER-MOVIES-BY-QUALITY


فرمت کلی دستور به صورت زیر است:

FILTER-MOVIES-BY-QUALITY <pattern>
Plain text

در این دستور باید movie-id تمام فیلم‌هایی که کیفیت آن برابر <pattern> است را به ترتیب صعودی که داخل [] قرار دارند و با , از هم جدا شده‌اند چاپ کنید. (دقیقاً مشابه نمونه‌ها)

ورودی

در سطر اول ورودی، عدد صحیح و مثبت nn آمده که تعداد دستورها را نشان می‌دهد. 1n30001 \leq n \leq 3000

در nn سطر بعدی، در هر سطر یک دستور مطابق توضیحات سوال داده می‌شود.

خروجی

در nn سطر و در هر سطر، خروجی متناسب با هر دستور را چاپ کنید.

مثال‌ها

ورودی نمونه ۱

14
ADD-MOVIE Hezarpa 2018 1080p
ADD-MOVIE Dracula 2016 720p
ADD-CAST RezaAttaran
ADD-CAST SiamakAnsari
ADD-CAST JavadEzati
LINK-CAST-TO-MOVIE 2 0
LINK-CAST-TO-MOVIE 1 1
LINK-CAST-TO-MOVIE 0 0
LINK-CAST-TO-MOVIE 0 1
SHOW-CAST 0
SHOW-CAST 1
SHOW-CAST 2
SHOW-MOVIE 0
SHOW-MOVIE 1
Plain text

خروجی نمونه ۱

added successfully 0
added successfully 1
added successfully 0
added successfully 1
added successfully 2
successfully linked 2 to 0
successfully linked 1 to 1
successfully linked 0 to 0
successfully linked 0 to 1
{name:"RezaAttaran", movies:[0, 1]}
{name:"SiamakAnsari", movies:[1]}
{name:"JavadEzati", movies:[0]}
{title:"Hezarpa", date:"2018", quality:"1080p", casts:[0, 2]}
{title:"Dracula", date:"2016", quality:"720p", casts:[0, 1]}
Plain text

ورودی نمونه ۲

23
ADD-MOVIE Hezarpa 2018 1080p
ADD-MOVIE Dracula 2016 720p
ADD-MOVIE The_Shawshank_Redemption 1994 1080p
ADD-MOVIE The_Godfather 1972 720p
ADD-MOVIE Interstellar 2014 4K
ADD-CAST Tom_Hanks
ADD-CAST Leonardo_DiCaprio
ADD-CAST Brad_Pitt
ADD-CAST InvalidCastNameWithMoreThan20
REM-CAST 3
REM-MOVIE 4
LINK-CAST-TO-MOVIE 0 0
LINK-CAST-TO-MOVIE 1 1
LINK-CAST-TO-MOVIE 2 0
SHOW-MOVIE 0
SHOW-MOVIE 1
SHOW-CAST 0
SHOW-CAST 1
SHOW-CAST 2
SHOW-CAST 3
FILTER-MOVIES-BY-TITLE The_
FILTER-MOVIES-BY-DATE > 2000
FILTER-MOVIES-BY-QUALITY 1080p
Plain text

خروجی نمونه ۲

added successfully 0
added successfully 1
invalid title
added successfully 2
added successfully 3
invalid name
invalid name
invalid name
invalid name
invalid cast id
invalid movie id
invalid cast id
invalid cast id
invalid cast id
{title:"Hezarpa", date:"2018", quality:"1080p", casts:[]}
{title:"Dracula", date:"2016", quality:"720p", casts:[]}
invalid cast id
invalid cast id
invalid cast id
invalid cast id
[2]
[0, 1, 3]
[0]
Plain text

ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.