- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
شرکت beeptunes، در حال راهاندازی یک سیستم هوش مصنوعی برای پیشنهاد موسیقی به کاربرهاست. اکنون بخش هوش این سیستم به انتها رسیده، اما هنوز رابط درستی بین دادههای موجود و بخش هوش سیستم وجود ندارد!
دو نوع داده جهت سیستم پیشنهاد موسیقی قابل استفاده است:
- دادههای مربوط به هر کاربر. این دادهها شامل نام کاربری، سن، شهر و لیست نام آلبومهاییست که این کاربر خریداری کرده است.
- دادههای مربوط به هر آلبوم. ایندادهها شامل نام آلبوم، نام خواننده، سبک و تعداد ترکهای موسیقی این آلبوم هستند.
برای این سیستم هوش مصنوعی، خود این دادهها بصورت خام اهمیتی ندارند. این سیستم دادهها را بطور خاصی درخواست میکند و باید آنها را در اختیارش قرار دهیم. درخواستها به صورتهای زیر ممکن است باشند:
- درخواست تعداد آهنگهایی که یک کاربر از یک خواننده خریدهاست.
- درخواست تعداد آهنگهایی که یک کاربر از یک سبک خریدهاست.
- درخواست تعداد آهنگهایی که کاربرهای با یک سن خاص، از یک خواننده خریدهاند.
- درخواست تعداد آهنگهایی که کاربرهای با یک سن خاص، از یک سبک خریدهاند.
- درخواست تعداد آهنگهایی که کاربرهای با یک شهر خاص، از یک خواننده خریدهاند.
- درخواست تعداد آهنگهایی که کاربرهای با یک شهر خاص، از یک سبک خریدهاند.
البته این سیستم خیلی هم باهوش نیست و ممکن است در سوالهایی که میپرسد نام کاربری، یا نام خواننده و یا هریک از فیلدهای مسئله اشتباه باشد و واقعاً در بین دادههای سایت موجود نباشد.
حال به سراغ شما آمدهایم تا این رابط را برای ما بنویسید! برنامهای بنویسید که دادههای شرکت را بصورت Yaml دریافت کند، سپس به درخواستهای از انواع مختلف پاسخ بدهد.
برای آشنایی با فرمت Yaml میتوانید به مثالهای سوال (و البته اینترنت!) مراجعه کنید. دقت کنید که ورودیهای این سوال حالت خاص و بسیار سادهای از Yaml میباشد.
ورودی
در خط اول ورودی عدد $n$ آمدهاست که نمایانگر تعداد دادههای از نوع کاربر است. سپس این $n$ داده بصورت Yaml میآیند.
پس از آن، در خط بعدی عدد $m$ آمدهاست که نمایانگر تعداد دادههای از نوع آلبوم است. سپس این $m$ داده بصورت Yaml میآیند.
در این Yamlها، فیلدهای نام کاربری، سن، شهر و لیست آلبومها برای هر کاربر به همین ترتیب میآیند و با کلیدهای زیر مشخص میشوند:
name
age
city
albums
همچنین فیلدهای نام آلبوم، نام خواننده، سبک و تعداد ترکهای یک آلبوم به همین ترتیب میآیند و با کلیدهای زیر مشخص میشوند:
name
singer
genre
tracks
در فیلدهای age
و tracks
حتماً یک عدد بین ۱ تا ۳۰ میآید و در دیگر فیلدها رشتههای متشکل از حداکثر ۱۰ کاراکتر از حروف کوچک انگلیسی میآید.
و فرمت اعداد و رشتهها و فواصل، دقیقاً به شکل ورودیهای نمونه خواهد بود. هر تب نیز با ۲ تا فاصله (space) مشخص میشود.
سپس در خط بعدی عدد $q$ آمده است که نمایانگر تعداد درخواستهایی است که برنامه شما باید به آنها پاسخ دهد. سپس در هریک از $q$ سطر بعدی، ابتدا شماره نوع درخواست و سپس توضیح آن میآید که به یکی از ۶ شکل زیر است:
- 1
user
singer
- 2
user
genre
- 3
age
singer
- 4
age
genre
- 5
city
singer
- 6
city
genre
دقت کنید که ممکن است هریک از اطلاعات داخل پرسشها (از قبیل نام کاربر، نام خواننده، ...) در ورودی موجود نباشد.
$$1 \le n, m, q \le 100$$
تضمین میشود که نامهای کاربری و نام آلبومها، متفاوت هستند. همچنین تضمین میشود تمامی نامهای آلبومهای خریده شده توسط کاربرها درست هستند و چنین آلبومهایی وجود دارند. همچنین تمامی رشتههای موجود در دادهها از حروف کوچک انگلیسی تشکیل شدهاند و بین ۱ تا ۱۰ کاراکتر دارند. و تمامی اعداد موجود در دادهها بین ۱ تا ۳۰ هستند.
تضمین میشود که آلبومها و کاربرهای مختلف، نامهای مختلف دارند. همچنین هیچیک از کلیدهای توضیحی (مانند name
و albums
و ...) بعنوان نام کاربر، آلبوم، خواننده، سبک و یا شهر در ورودی نمیآیند.
خروجی
به ازای هر درخواست، برنامهی شما باید یک عدد خروجی دهد که برابر با پاسخ آن درخواست است.
مثال
ورودی نمونه ۱
1
- name: ali
age: 12
city: bushehr
albums:
- bidad
- blaze
2
- name: bidad
singer: shajarian
genre: classic
tracks: 10
- name: blaze
singer: ghorbani
genre: pop
tracks: 9
1
1 ali ghorbani
خروجی نمونه ۱
9
ورودی نمونه ۲
2
- name: gholi
age: 18
city: tehran
albums:
- tekunbede
- barf
- hoyad
- name: mehdi
age: 20
city: mashhad
albums:
- eclipse
- barf
- hoyad
4
- name: eclipse
singer: malmsteen
genre: classic
tracks: 10
- name: barf
singer: beeptunes
genre: pop
tracks: 22
- name: tekunbede
singer: beeptunes
genre: pop
tracks: 14
- name: hoyad
singer: hoyad
genre: persian
tracks: 5
12
1 gholi hoyad
1 gholi beeptunes
2 gholi rock
2 mehdi pop
3 20 beeptunes
4 18 malmsteen
4 19 malmsteen
5 tehran malmsteen
5 mashhad malmsteen
6 tehran pop
6 ghazvin rock
1 mehdi shajarian
خروجی نمونه ۲
5
36
0
22
22
0
0
0
10
36
0
0
ارسال پاسخ برای این سؤال