Sliding Window Minimum
Xem dạng PDF
Gửi bài giải
Điểm:
1,00 (OI)
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
256M
Input:
stdin
Output:
stdout
Dạng bài
Bạn được cho dãy ~x_1, x_2, \dots, x_n~. Do dữ liệu rất lớn, dãy không được nhập trực tiếp mà được sinh bởi bộ sinh sau:
- ~x_1 = x~
- ~x_i = (a\cdot x_{i-1} + b) \bmod c~ với ~i = 2,3,\dots,n~
Với mỗi cửa sổ liên tiếp độ dài ~k~, ta xét giá trị nhỏ nhất trong cửa sổ đó theo thứ tự từ trái sang phải.
Yêu cầu
Gọi ~m_i = \min\{x_i, x_{i+1}, \dots, x_{i+k-1}\}~ với ~i = 1..(n-k+1)~.
Hãy in ra giá trị ~m_1 \oplus m_2 \oplus \dots \oplus m_{n-k+1}~, trong đó ~\oplus~ là phép XOR bit.
Dữ liệu
- Dòng 1: hai số nguyên ~n~, ~k~.
- Dòng 2: bốn số nguyên ~x~, ~a~, ~b~, ~c~ là tham số của bộ sinh.
Kết quả
- In ra một số nguyên là XOR của tất cả các giá trị nhỏ nhất trên từng cửa sổ.
Ví dụ
Ví dụ 1
Input
8 5
3 7 1 11
Output
3
Giải thích
Ví dụ 1
Dãy sinh ra là ~[3,0,1,8,2,4,7,6]~.
Các cửa sổ độ dài ~5~ có giá trị nhỏ nhất lần lượt là ~0, 0, 1, 2~.
Do đó kết quả là ~0 \oplus 0 \oplus 1 \oplus 2 = 3~.
Ràng buộc và chấm điểm
Ràng buộc
- ~1 \le k \le n \le 10^7~
- ~0 \le x, a, b \le 10^9~
- ~1 \le c \le 10^9~
Bình luận