Cho hai dãy số nguyên dương A và B, mỗi dãy gồm N phần tử. Bạn cần xử lý Q truy vấn độc lập.
Mỗi truy vấn cho bốn chỉ số l, r, L, R. Hãy xác định liệu có thể sắp xếp lại các phần tử của đoạn Al,…,Ar để nhận đúng đoạn BL,…,BR hay không.
Nói cách khác, câu trả lời là Yes khi hai đoạn có cùng độ dài và mỗi giá trị xuất hiện trong hai đoạn với cùng số lần. Thứ tự ban đầu của các phần tử không quan trọng. Chỉ việc hai đoạn có cùng tổng số học hoặc cùng tập giá trị là chưa đủ nếu số lần xuất hiện của một giá trị nào đó khác nhau.
Input
Dòng đầu chứa hai số nguyên N và Q.
Dòng thứ hai chứa N số nguyên A1,A2,…,AN.
Dòng thứ ba chứa N số nguyên B1,B2,…,BN.
Mỗi trong Q dòng tiếp theo chứa bốn số nguyên l,r,L,R, mô tả hai đoạn đóng Al,…,Ar và BL,…,BR.
Output
Với mỗi truy vấn, in một dòng:
in Yes nếu có thể hoán vị đoạn của A để nhận đúng đoạn của B;
in No trong trường hợp ngược lại.
Constraints
1≤N,Q≤2⋅105.
1≤Ai,Bi≤N.
1≤l≤r≤N và 1≤L≤R≤N trong mọi truy vấn.
Mọi giá trị trong input đều là số nguyên.
Scoring
Subtask 1 (50% số điểm): N,Q≤500.
Subtask 2 (50% số điểm): Không có giới hạn bổ sung.
Giải thích: Ở các truy vấn 1,3 và 5, hai đoạn tương ứng có cùng số lần xuất hiện của từng giá trị nên có thể sắp xếp để khớp nhau. Truy vấn 2 và 4 có đa tập khác nhau, còn truy vấn 6 dùng hai đoạn có độ dài khác nhau, nên đều nhận kết quả No.
Lời giải tóm tắt
Mô hình đa tập: Hoán vị không làm thay đổi số lần xuất hiện của bất kỳ giá trị nào. Vì vậy, hai đoạn có thể khớp nhau khi và chỉ khi:
Mô hình đa tập: 1. chúng có cùng độ dài; 2. với mọi giá trị x, số lần x xuất hiện trong hai đoạn bằng nhau.
Mô hình đa tập: Vector tần suất có tới N thành phần, nên không thể so sánh trực tiếp trong mỗi truy vấn.
Fingerprint ngẫu nhiên: Chọn hai số nguyên tố lớn P_1 và P_2. Với mỗi giá trị x trong 1..N, gán độc lập hai trọng số ngẫu nhiên w_1[x] và w_2[x] trong hai trường modulo. Fingerprint của một đa tập là tổng trọng số của mọi phần tử, tính riêng theo hai modulo.
Fingerprint ngẫu nhiên: Lập hai mảng tổng tiền tố cho mỗi dãy. Fingerprint của một đoạn được lấy bằng hiệu hai prefix, nên mỗi truy vấn chỉ tốn thời gian hằng số. Nếu độ dài khác nhau thì trả lời No; nếu độ dài bằng nhau, so sánh cả hai fingerprint.
Fingerprint ngẫu nhiên: Nếu hai đa tập bằng nhau thì hai fingerprint chắc chắn bằng nhau. Nếu chúng khác nhau, tồn tại ít nhất một hệ số chênh lệch tần suất khác 0. Vì mỗi hệ số có trị tuyệt đối nhỏ hơn hai modulo, xác suất một phép chiếu ngẫu nhiên bị va chạm không quá nghịch đảo modulo; dùng hai phép chiếu độc lập làm xác suất lỗi xấp xỉ dưới 10^-18 cho mỗi truy vấn.
Độ phức tạp: Tiền xử lý tốn O(N), mỗi truy vấn tốn O(1) và bộ nhớ là O(N).