• محدودیت زمان: ۲ ثانیه
  • محدودیت حافظه: ۱۲۸ مگابایت

برنامه‌ای بنویسید که عدد nn و سپس یک دنباله nn-تایی a1,a2,a3,...,ana_1, a_2, a_3, ..., a_n را از ورودی بخواند. سپس به برنامه‌ی شما qq پرسش داده می‌شود که هر پرسش بصورت یک عدد rr است و برنامه‌ی شما باید نتیجه‌ی این پرسش را چاپ کند. نتیجه‌ی پرسش rr برابر مقدار زیر است:

i=1rai xor (ri)\sum _{i = 1} ^ r a_i \ xor\ (r - i)

برنامه‌تان را طوری بنویسید که پیش‌پردازش طولانی نداشته باشد و پاسخ هر پرسش را سریع بدهد؛ یعنی پیش از پرسش اول و پس از دریافت هر پرسش تا پایان خروجی دادن کمتر از ضریب ثابتی از nn دستور (مستقل از دیگر متغیرهای ورودی بجز nn) انجام بشود. همچنین کل اجرای برنامه‌ی شما نباید بیش از ۲ ثانیه طول بکشد.

راهنمایی:

روش‌های مختلفی برای پیاده‌سازی بهینه وجود دارد؛ یکی از آن‌ها این‌چنین است: برای هر پرسش مقدار گفته‌شده را با یک حلقه ساده بدست آورید؛ در این روش تنها کاری که برای بهینه‌سازی زمان برنامه باید بکنید این است که پس از محاسبه‌ی نتیجه‌ی یک پرسش، این نتیجه را جایی ذخیره کنید که اگر در ادامه‌ دقیقاً همان پرسش دوباره مطرح شد، دوباره آن را محاسبه نکنید و مقداری که از قبل محاسبه شده بود را خروجی دهید.

ورودی

در سطر اول ورودی دو عدد nn و qq آمده است و در سطر دوم nn عدد طبیعی آمده است که عدد ii-ام نمایان‌گر aia_i است. سپس در qq سطر بعدی هر خط یک سوال بصورت یک عدد طبیعی آمده است که برابر rr است.

1ai1 000 0001 \le a_i \le 1\ 000\ 000 1rn10 0001 \le r \le n \le 10\ 000 1q500 0001 \le q \le 500\ 000

خروجی

در qq سطر هریک یک عدد چاپ کنید که پاسخ به یکی از پرسش‌های داده شده است.

مثال

ورودی نمونه

4 4
4 3 6 2
1
2
3
4
Plain text

خروجی نمونه

4
8
14
17
Plain text

پاسخ پرسش‌ها به ترتیب:

4 xor 0=44\ xor\ 0 = 4

(4 xor 1)+(3 xor 0)=5+3=8(4 \ xor\ 1) + (3 \ xor\ 0) = 5 + 3 = 8

(4 xor 2)+(3 xor 1)+(6 xor 0)=6+2+6=14(4 \ xor\ 2) + (3 \ xor\ 1) + (6 \ xor\ 0) = 6 + 2 + 6 = 14

(4 xor 3)+(3 xor 2)+(6 xor 1)+(2 xor 0)=7+1+7+2=17(4 \ xor\ 3) + (3 \ xor\ 2) + (6 \ xor\ 1) + (2 \ xor\ 0) = 7 + 1 + 7 + 2 = 17


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