پایگاهدادهٔ موسیقیها
Time Limit: 3 Seconds Memory Limit: 16384 KB
شرکت فسنقری، در حال راه اندازی یک سیستم هوش مصنوعی برای پیشنهاد موسیقی به کاربرهاست. اکنون بخش هوش این سیستم به انتها رسیده اما هنوز رابط درستی بین دادههای موجود و بخش هوش سیستم وجود ندارد!
دو نوع داده جهت سیستم پیشنهاد موسیقی قابل استفاده است:
• دادههای مربوط به هر کاربر. این دادهها شامل نام کاربری، سن، شهر و لیست نام آلبومهاییست که این کاربر خریداری کرده است.
• دادههای مربوط به هر آلبوم. ایندادهها شامل نام آلبوم، نام خواننده، سبک و تعداد ترکهای موسیقی این آلبوم هستند.
این سیستم دادهها را بهطور خاصی درخواست میکند و باید آنها را در اختیارش قرار دهیم. درخواستها به صورتهای زیر ممکن است باشند:
• درخواست تعداد آهنگهایی که یک کاربر از یک خواننده خریدهاست.
• درخواست تعداد آهنگهایی که یک کاربر از یک سبک خریدهاست.
• درخواست تعداد آهنگهایی که کاربرهای با یک سن خاص، از یک خواننده خریدهاند.
• درخواست تعداد آهنگهایی که کاربرهای با یک سن خاص، از یک سبک خریدهاند.
• درخواست تعداد آهنگهایی که کاربرهای با یک شهر خاص، از یک خواننده خریدهاند.
• درخواست تعداد آهنگهایی که کاربرهای با یک شهر خاص، از یک سبک خریدهاند.
البته این سیستم خیلی هم باهوش نیست و ممکن است در سؤالهایی که میپرسد نام کاربری، یا نام خواننده و یا هریک از فیلدهای مسئله اشتباه باشد و واقعاً در بین دادههای سایت موجود نباشد.
حال به سراغ شما آمدهایم تا این رابط را برای ما بنویسید! برنامهای بنویسید که دادههای شرکت را به صورتی شبیه به YAML دریافت کند، سپس به درخواستهای از انواع مختلف پاسخ بدهد.
دو نوع داده جهت سیستم پیشنهاد موسیقی قابل استفاده است:
• دادههای مربوط به هر کاربر. این دادهها شامل نام کاربری، سن، شهر و لیست نام آلبومهاییست که این کاربر خریداری کرده است.
• دادههای مربوط به هر آلبوم. ایندادهها شامل نام آلبوم، نام خواننده، سبک و تعداد ترکهای موسیقی این آلبوم هستند.
این سیستم دادهها را بهطور خاصی درخواست میکند و باید آنها را در اختیارش قرار دهیم. درخواستها به صورتهای زیر ممکن است باشند:
• درخواست تعداد آهنگهایی که یک کاربر از یک خواننده خریدهاست.
• درخواست تعداد آهنگهایی که یک کاربر از یک سبک خریدهاست.
• درخواست تعداد آهنگهایی که کاربرهای با یک سن خاص، از یک خواننده خریدهاند.
• درخواست تعداد آهنگهایی که کاربرهای با یک سن خاص، از یک سبک خریدهاند.
• درخواست تعداد آهنگهایی که کاربرهای با یک شهر خاص، از یک خواننده خریدهاند.
• درخواست تعداد آهنگهایی که کاربرهای با یک شهر خاص، از یک سبک خریدهاند.
البته این سیستم خیلی هم باهوش نیست و ممکن است در سؤالهایی که میپرسد نام کاربری، یا نام خواننده و یا هریک از فیلدهای مسئله اشتباه باشد و واقعاً در بین دادههای سایت موجود نباشد.
حال به سراغ شما آمدهایم تا این رابط را برای ما بنویسید! برنامهای بنویسید که دادههای شرکت را به صورتی شبیه به YAML دریافت کند، سپس به درخواستهای از انواع مختلف پاسخ بدهد.
Input
در خط اول ورودی n عددآمدهاست که نمایانگر تعداد دادههای از نوع کاربر است. سپس این n داده به صورت YAML میآیند. پس از آن، در خط بعدی عدد m آمدهاست که نمایانگر تعداد دادههای از نوع آلبوم است. سپس این m داده به صورت YAML میآیند.
در این YAMLها، فیلدهای نام کاربری، سن، شهر و لیست آلبومها برای هر کاربر به همین ترتیب میآیند و با کلیدهای زیر مشخص میشوند:
در این YAMLها، فیلدهای نام کاربری، سن، شهر و لیست آلبومها برای هر کاربر به همین ترتیب میآیند و با کلیدهای زیر مشخص میشوند:
name
age
city
albums
age
city
albums
همچنین فیلدهای نام آلبوم، نام خواننده، سبک و تعداد ترکهای یک آلبوم به همین ترتیب میآیند و با کلیدهای زیر مشخص میشوند:
name
singer
genre
tracks
singer
genre
tracks
در فیلدهای age و tracks حتماً یک عدد بین ۱ تا ۳۰ میآید و در دیگر فیلدها رشتههای متشکل از حداکثر ۱۰ کاراکتر از حروف کوچک انگلیسی میآید. و فرمت اعداد و رشتهها و فواصل، دقیقاً به شکل ورودیهای نمونه خواهد بود. هر تب نیز با ۲ تا فاصله (space) مشخص میشود.
سپس در خط بعدی عدد q آمده است که نمایانگر تعداد درخواستهایی است که برنامه شما باید به آنها پاسخ دهد. سپس در هریک از q سطر بعدی، ابتدا شماره نوع درخواست و سپس توضیح آن میآید که به یکی از ۶ شکل زیر است:
سپس در خط بعدی عدد q آمده است که نمایانگر تعداد درخواستهایی است که برنامه شما باید به آنها پاسخ دهد. سپس در هریک از q سطر بعدی، ابتدا شماره نوع درخواست و سپس توضیح آن میآید که به یکی از ۶ شکل زیر است:
1 user singer
2 user genre
3 age singer
4 age genre
5 city singer
6 city genre
2 user genre
3 age singer
4 age genre
5 city singer
6 city genre
Output
به ازای هر درخواست، برنامهی شما باید یک عدد خروجی دهد که برابر با پاسخ آن درخواست است.
Sample Input
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 7 1 gholi hoyad 1 gholi beeptunes 2 gholi rock 2 mehdi pop 3 20 beeptunes 4 18 malmsteen 4 19 malmsteen
Sample Output
5 36 0 22 22 0 0Submit