#P3060. Make it Manhattan
Make it Manhattan
Description
Chaos City has grown out of control. Building have been built everywhere and the city layout is a complete mess. The mayor decided that this must come to an end, and wants to create a nice, structed city.
After some research, he found the ideal way to make this happen. Inspired by the New York district of Manhanttan, he wants all buidlings organized in a rectangular grid, separated by avenuesrunning from North to South and streets running from West to East. These streets and avenues should all be separated by the same distance D.
In the current situation, the buidlings are already organized in a rectangular grid. In fact each buidling fills exactly one square in this grid. However, with all the buildings randomly scattered across the city, it may be impossible to build the roads without demolishing a couple of buildings. To keep most citizens happy, the mayor wants to demolish as few buidlings as possible. Given the current locations of the buidlings, what's this minimum number?
The above picture illustrates the problem. The shaded squares are the initial locations of the buidlings. If the roads should be separated by a distance of three, the thick lines indicate the optimal placement of the roads and one building has to be demolished.
Input
The first line of the input contains a single number: the number of test cases to follow. Each test case has the following format:
One line with two integers D and N, separated by a single space, satisfying 1 <=D <= 1000 and 0 <= N <= 100000: the distance between two roads, and the number of buidling in the city respectively.
N lines with two integers xi and yi, separated by a single space, satisfying -109 <= xi, yi <= 109: the positions of the buidlings.
Output
For every testcase in the input, the output should contains a single line with the minimum number of buidling that has to be demolished.
1
3 10
1 0
2 0
3 0
4 0
1 2
0 3
1 5
3 5
4 2
-2 2
1
Source
The 2006 Benelux Algorithm Programming Contest