VECTOR - Tổng vector

Tags: binary-search, dfs, sortings

Problem

https://vn.spoj.com/problems/VECTOR

https://oj.vnoi.info/problem/VECTOR

Trong mặt phẳng tọa độ có N véc tơ. Mỗi một véc tơ được cho bởi hai chỉ số xy. Tổng của hai véc tơ (xi, yi)(xj, yj) được định nghĩa là một véc tơ (xi + xj, yi + yj). Bài toán đặt ra là cần chọn một số véc tơ trong N véc tơ đã cho sao cho tổng của các vec tơ đó là véc tơ (U, V).

Yêu cầu: Đếm số cách chọn thoả mãn yêu cầu bài toán đặt ra ở trên.

Input

  • Dòng thứ nhất ghi số N (0 ≤ N ≤ 30).
  • N dòng tiếp theo, dòng thứ i ghi các số nguyên xi, yi lần lượt là hai chỉ số của véc tơ thứ i. (|xi|, |yi| ≤ 100).
  • Dòng cuối cùng ghi số hai số nguyên U V (|U|, |V| ≤ 10^9).

Output

Gồm một số duy nhất là số cách chọn thoả mãn.

Example

Input
4
0  0
-1  2
2  5
3  3
2  5

Output
4

Tutorial

Chia tập vector ban đầu thành 2 tập con, mỗi tập N/2 (~15 vectors). Với mỗi tập, sinh tất cả các vector có thể hình thành, do đó mỗi tập có khoảng 2^15 = 32K cách chọn.

Dựa trên 2 tập đã sinh, gọi là AB, duyệt theo tập A, với mỗi vector sinh được từ tập A, chặt nhị phân trên tập B để tìm số cách sinh được phần còn lại của vector.

Độ phức tạp O(2^15 * 15)


Submission

VECTOR.cpp