Codeforces Round #803 (Div. 2)
06:07:36 |
Codeforces Round #804 (Div. 2)
6 өдрийн дараа |
D. Удаан өөрчлөлт
хугацааны хязгаарлалт 6 секунд
санах ойн хязгаарлалт 256 мегабайт
оролт стандарт оролт
гаралт стандарт гаралт
$n$ тооноос бүрдсэн $a$ массив байна гэж үзье. Массивын элементүүд $1$-ээс $n$ хүртэл эрэмбэлэгдсэн байна. $тэгш$ нь $a$ ($even_{i} = a_{2i}$, $1 ≤ 2i ≤ n$)-ын дугаар нь тэгш байх тоонуудаас бүрдсэн массив бол, $сондгой$ нь $a$ ($odd_{i} = a_{2i - 1}$, $1 ≤ 2i - 1 ≤ n$)-ын дугаарууд нь сондгой байх тоонуудаас бүрдсэн массив юм. Ингээд дараах аргаар $F(a)$ массивын өөрчлөлтийг хийцгээе:
Хэрэв $n > 1$, $F(a) = F(сондгой) + F(тэгш)$ бол, энд "$ + $" нь массивын тасралтгүй байдлыг илэрхийлж байна. (холбогдсон байна)
Хэрэв $n = 1$, $F(a) = a$
$1, 2, 3, ..., n$ гэх мэт $n$ ширхэг тооноос бүрдсэн $a$ массив байна. $a$ ($b = F(a)$)-д массивд өөрчлөлт хийсний үр дүнд $b$ массив бий болсон. Танд $(l, r, u, v)$ хэлбэртэй $m$ ширхэг асуулга өгөгджээ. Та асуулга тус бүрт $b_{i}$, $l ≤ i ≤ r$, $u ≤ b_{i} ≤ v$ тоонуудын нийлбэрийг олох ёстой. Та асуулгын модуль хариу $mod$-г олох ёстой.
Оролт
Эхний мөрөнд $n$, $m$, $mod$ ($1 ≤ n ≤ 10^{18}, 1 ≤ m ≤ 10^{5}, 1 ≤ mod ≤ 10^{9}$) гэсэн гурваг бүхэл тоо агуулагдна. Дараагийн $m$ мөрүүд нь асуулгын тодорхойлно. Асуулга тус бүр нь $l$, $r$, $u$, $v$ ($1 ≤ l ≤ r ≤ n$, $1 ≤ u ≤ v ≤ 10^{18}$) гэсэн 4 бүхэл тоогоор тодорхойлогдоно.
C++ дахь 64 бит бүхэл тоог унших болох бичихдээ %lld нарийвчлал ашиглахгүйг анхаарна уу. Үүний оронд %I64d нарийчлал ашиглаж болно.
Гаралт
Тус бүр нь асуулгын үр дүнгийн үлдэгдэл модуль $mod$ болох бүхэл тоо агуулсан $m$ мөрүүд хэвлэнэ үү.
Орчуулсан: Энхгэрэл
Жишээ тэстүүд
Оролт
4 5 10000 2 3 4 5 2 4 1 3 1 2 2 4 2 3 3 5 1 3 3 4
Гаралт
0 5 3 3 3
Оролт
2 5 10000 1 2 2 2 1 1 4 5 1 1 2 5 1 1 1 3 1 2 5 5
Гаралт
2 0 0 1 0
Тэмдэглэл
Эхний жишээг харцгаая: Эхлээд $b = F(a) = F([1, 2, 3, 4])$ гэсэн массив бүтээцгээе. * Алхам 1. $F([1, 2, 3, 4]) = F([1, 3]) + F([2, 4])$ * Алхам 2. $F([1, 3]) = F([1]) + F([3]) = [1] + [3] = [1, 3]$ * Алхам 3. $F([2, 4]) = F([2]) + F([4]) = [2] + [4] = [2, 4]$ * Алхам 4. $b = F([1, 2, 3, 4]) = F([1, 3]) + F([2, 4]) = [1, 3] + [2, 4] = [1, 3, 2, 4]$
Ингээд $b = [1, 3, 2, 4]$ байна. Эхлээд эхний асуулга $l = 2, r = 3, u = 4, v = 5$-г харцгаая. $b$ массивын хоёр болон гурав дахь байрлал нь $[4, 5]$ цуваанд тоо байхгүй байна. Тиймээс нийлбэр нь мэдээж 0-тэй тэнцүү байна.
Хоёр дахь асуулга $l = 2, r = 4, u = 1, v = 3$-г харцгаая. Хоёр болон гурав дахь байрлалд $[1, 3]$ цуваанд хамаарах хоёр тоо байгаа ба эдгээрийн нийлбэр 5-тай тэнцүү байна.