فرض کنید سامانهای داریم که شامل تعدادی تبلیغ و وبسایت است که این وبسایتها را به عنوان جایگاهی برای این تبلیغات در نظر میگیریم. هرکدام از این جایگاهها و تبلیغات دارای تعدادی برچسب مختلف مثل «Football»، «Technology» و… هستند. هدف اصلی این سامانه این است که این تبلیغات و جایگاهها را مدیریت کرده و هر تبلیغ را به جایگاه مناسبی متصل کند.
نحوهی پرداخت هزینهی تبلیغات بهصورت «هزینه به ازای هر کلیک» (Cost Per Click) است که به اختصار CPC نامیده میشود. هر جایگاه و هر تبلیغ یک CPC مورد انتظار دارند که در ادامه سوال با آن آشنا میشوید.
شما باید برنامهای برای مدیریت این سامانه بنویسید که با گرفتن لیستی از درخواستها، آنها را به ترتیب اجرا کرده و خروجی مربوط به آن را چاپ کند. جزئیات مربوط به این درخواستها به تفکیک نوع آنها در ادامه آمده است.
ADD-TAG -name <name>
🔗این درخواست اضافه کردن یک برچسب با نام <name>
است.
<name>
: رشتهای با حروف الفبای انگلیسی بزرگ و کوچک و اعداد و بدون فاصله با طول حداکثر ۳۰ کاراکتر.به هر برچسب بعد از اضافه شدن یک شماره به نام id
نسبت داده میشود، این شمارهها از ۱ شروع میشوند و به ترتیب افزایش مییابند.
Error: Tag already exists
را چاپ کنید.<id>
بود باید Done: Tag id is <id>
را چاپ کنید.TAG-LIST
🔗این درخواست نمایش لیست همهی برچسبها است. خروجی باید ابتدا کلمهی TAGs:
و سپس نام برچسبها به ترتیب شمارهی آنها با فاصله از هم باشد. مثل:
TAGs: <tag1> <tag2> ...
🔗<ADD-ADS -name <name> -cpc <cpc> -tags <tag1> <tag2> ...
🔗این درخواست اضافه کردن یک تبلیغ با نام <name>
، با مقدار CPC مورد انتظار <cpc>
، لیست برچسبهای مربوط به این تبلیغ <tag1>
، <tag2>
و... است.
<name>
: رشتهای با حروف الفبای انگلیسی بزرگ و کوچک و اعداد و بدون فاصله با طول حداکثر ۳۰ کاراکتر.<cpc>
: یک عدد صحیح نامنفی حداکثر ۱۰۰۰ است.<tag1> <tag2> ...
: لیستی از نام موضوعات.به هر تبلیغ بعد از اضافه شدن یک شماره به نام id
نسبت داده میشود، این شمارهها از ۱ شروع میشوند و به ترتیب افزایش مییابند.
Error: Ad already exists
Error: Tag not found
<id>
بود باید Done: Ads id is <id>
را چاپ کنید.ADS-LIST
🔗این درخواست نمایش لیست همهی تبلیغات است. خروجی باید ابتدا کلمهی ADSs:
و سپس نام تبلیغات به ترتیب شمارهی آنها با فاصله از هم باشد. مثل:
ADSs: <ads1> <ads2> ...
🔗ADD-PLACE -name <name> -cpc <cpc> -tags <tag1> <tag2> ...
🔗این درخواست اضافه کردن یک جایگاه با نام <name>
، با مقدار CPC مورد انتظار <cpc>
، لیست برچسبهای مربوط به این جایگاه <tag1>
، <tag2>
و... است.
<name>
: رشتهای با حروف الفبای انگلیسی بزرگ و کوچک و اعداد و بدون فاصله با طول حداکثر ۳۰ کاراکتر.<cpc>
: یک عدد صحیح نامنفی حداکثر ۱۰۰۰ است.<tag1> <tag2> ...
: لیستی از نام موضوعات.به هر جایگاه بعد از اضافه شدن یک شماره به نام id
نسبت داده میشود، این شمارهها از ۱ شروع میشوند و به ترتیب افزایش مییابند.
Error: Place already exists
Error: Tag not found
<id>
بود باید Done: Place id is <id>
را چاپ کنید.PLACE-LIST
🔗این درخواست نمایش لیست همهی جایگاهها است. خروجی باید ابتدا کلمهی PLACEs:
و سپس نام تبلیغات به ترتیب شمارهی آنها با فاصله از هم باشد. مثل:
PLACEs: <place1> <place2> ...
🔗این درخواست لیست تمام تبلیغات به ترتیب مناسب بودن برای جایگاه <id>
است.
Error: Place not found
SUGGEST-ADS:
و سپس شمارهی همهی تبلیغات را در یک سطر و با فاصله از هم به ترتیب مناسب بودن چاپ کنید.مناسب بودن تبلیغ شمارهی برای جایگاه شمارهی از فرمول زیر محاسبه میشود و هر چه این عدد بیشتر باشد، تبلیغ مناسبتری است.
Number of Matched Tags
تعداد برچسبهای مشترک بین تبلیغ شمارهی و جایگاه شمارهی است.Number of Unmatched Tags
تعداد برچسبهایی از تبلیغ شماره است که در لیست برچسبهای جایگاه شماره نیامده است.این درخواست لیست تمام جایگاهها به ترتیب مناسب بودن برای تبلیغ <id>
است.
Error: Ads not found
SUGGEST-PLACE:
و سپس شمارهی همهی جایگاهها را در یک سطر و با فاصله از هم به ترتیب مناسب بودن چاپ کنید.مناسب بودن جایگاه شمارهی برای تبلیغ شمارهی از فرمول زیر محاسبه میشود و هر چه این عدد بیشتر باشد، تبلیغ مناسبتری است.
Number of Matched Tags
تعداد برچسبهای مشترک بین جایگاه شمارهی و تبلیغ شمارهی است.Number of Unmatched Tags
تعداد برچسبهایی از جایگاه شمارهی است که در لیست برچسبهای تبلیغ نیامده است.Error: Ads not found
Error: Place not found
Done: <ads-id> matched to <place-id>
توجه کنید بعد از متصل کردن، باید این تبلیغ و جایگاه را از لیست تبلیغات و جایگاههای موجود حذف کنید.
در سطر اول ورودی، عدد صحیح که تعداد درخواستها را نشان میدهد آمده است.
در سطر بعدی، در هر سطر یکی از درخواستها داده میشود.
خروجی هر درخواست را به ترتیب چاپ کنید.
Football
خطا میدهد.Tv
خطا میدهد.Ineternet
خطا میدهد.