Processing math: 100%

المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:دوره ی تابستان:دوره ی ۲۵:عملی نهایی چهارم:سوال ۱

Abstract

شاید باورش سخت باشد اما متن سوال به صورت صریح و عاری از داستان‌های تخیلی، در زیر آمده است:

برنامه‌ای بنویسید که با در نظر گرفتن دنباله‌ی اعداد صحیح a0,a1,,an1، عدد طبیعی l و عدد طبیعی k، تعداد زیر‌دنباله‌های متوالی از b0,b1,,bl1 را که حداقل k عدد متمایز دارند، محاسبه کند. دنباله‌ی b0,b1,,bl1 به صورت زیر ساخته می‌شود:

bi=a(i mod n)+in×n   (0il1)

ورودی

در سطر اول ورودی به ترتیب سه عدد طبیعی n، l و k‌ آمده است.

در سطر دوم ورودی، n عدد صحیح آمده است که اعداد دنباله‌ی a0,a1,,an1 را نشان می‌دهند.

خروجی

در تنها سطر خروجی پاسخ مسئله را چاپ کنید.

زیرمسئله‌ها

  • زیرمسئله اول (۱۲ نمره): k,l106
  • زیرمسئله دوم (۲۱ نمره): k=2
  • زیرمسئله سوم (۶۷ نمره): بدون محدودیت اضافی

محدودیت‌ها

  • 1n2000
  • 1kl109
  • nl

ورودی و خروجی نمونه

ورودی نمونه خروجی نمونه
3 6 4
1 2 3
6
3 6 4
1 4 7
1
3 10 1
1 1 1
55

شرح ورودی و خروجی نمونه

در ورودی نمونه‌ی اول، دنباله‌ی biها برابر است با: 1 2 3 4 5 6 . با توجه به این‌که تمامی اعداد این دنباله‌ متمایز هستند، بنابراین هر زیر‌دنباله‌ای که طول حداقل k=4 داشته باشد، باید در پاسخ در نظر گرفته شود. پس پاسخ مسئله برابر است با تعداد زیر‌دنباله‌های متوالی از bi‌ها که حداقل چهار عضو دارند. این تعداد برابر است با: 3+2+1=6

در ورودی نمونه‌ی دوم، دنباله‌ی bi‌ها برابر است با: 1 4 7 4 7 10. با توجه به این‌که تنها زیر‌دنباله‌ای که حداقل چهار عضو متمایز دارد، برابر با کل دنباله‌ی b0,b1,,b5 است بنابراین پاسخ مسئله برابر با 1 است.


ابزار صفحه