Giả sử chúng ta có một mảng A với n phần tử, các phần tử nằm trong khoảng từ -1 đến 1. Và có một mảng cặp khác cho m truy vấn Q như Q [i] =(li, ri). Phản hồi cho truy vấn sẽ là 1 khi các phần tử của mảng a có thể được sắp xếp lại sao cho tổng Q [li] + ... + Q [ri] =0, ngược lại là 0. Chúng ta phải tìm câu trả lời của tất cả các truy vấn.
Vì vậy, nếu đầu vào là A =[-1, 1, 1, 1, -1]; Q =[[1, 1], [2, 3], [3, 5], [2, 5], [1, 5]], thì đầu ra sẽ là [0, 1, 0, 1, 0]
Các bước
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
n:=size of Am:=size of Qz:=0 để khởi tạo, i:=0, khi in - z, thì:z:=n - z để khởi tạo i:=0, khi i Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
#includeusing namespace std; void Expl (vector A, vector > Q) {int n =A.size (); int m =Q.size (); int z =0; for (int a, i =0; i n - z) z =n - z; for (int i =0; i A ={-1, 1, 1, 1, -1}; vector > Q ={{1, 1}, {2, 3}, {3, 5}, {2, 5}, {1, 5}}; giải quyết (A, Q);} Đầu vào
{-1, 1, 1, 1, -1}, {{1, 1}, {2, 3}, {3, 5}, {2, 5}, {1, 5}}Đầu ra
1, 0, 1, 0, 1,