Link Sub: http://www.spoj.com/PTIT/problems/P145SUMB/
Người Gửi: Sai
- Problem:
Bạn có một mảng a[] gồm n phần tử, đánh số từ 1 tới n, mỗi phần tử có giá trị -1 hoặc 1. Bạn cần phải trả lời m truy vấn. Truy vấn thứ i dạng L[i], R[i] (1 <= L[i] <= R[i] <= n), hỏi rằng liệu có cách nào để sắp xếp lại mảng a[] để a[L[i]] + a[L[i] +1] + ... + a[R[i]] = 0.
Input
Dòng đầu tiên gồm 2 số nguyên n, m (1 <= n, m <= 2.10^5).
Dòng tiếp theo gồm n số của mảng a[].
m dòng tiếp theo là m truy vấn. Dòng thứ i chứa 2 số nguyên L[i], R[i] là truy vấn i.
Output
m dòng trả lời cho các truy vấn. Với mỗi truy vấn, n ra 1 nếu có, ngược lại in ra 0.
Example:
m dòng trả lời cho các truy vấn. Với mỗi truy vấn, n ra 1 nếu có, ngược lại in ra 0.
Input
2 3
1 -1
1 1
1 2
2 2
Output:
0
1
0
Input
5 5
-1 1 1 1 -1
1 1
2 3
3 5
2 5
1 5
Output:
0
1
0
1
0
- Solution:
Vì để tổng =0 thì số lượng 1 và số lượng -1 trong khoảng phải bằng nhau.
Đơn giản thôi:
- Đếm số lượng 1, đếm số lượng -1;
- Nếu khoảng l, r là khoảng chẵn (khoảng có số lượng số chẵn) thì xem số lượng 1 và -1 có >= số lượng số trong khoảng /2 không? đúng thì có thể, sai thì không thể.
VD: 1 -1 1 -1 -1 -1 -1: trong khoảng l=1, r=6. Tuy rằng là khoảng có số lượng chẵn nhưng số lượng số 1 chỉ có 2 không thể chia đều trên khoảng nên không thể xếp để tổng =0.
- Nếu khoảng l, r lẻ thì đương nhiên rồi không thể xếp được :vInput
5 5
-1 1 1 1 -1
1 1
2 3
3 5
2 5
1 5
Output:
0
1
0
1
0