PLAHTE - PLAHTE
English | Vietnamese |
Mirko washed his sheets and is on his way to hang them to dry in front of his house. However, strong winds have pulled the clothesline out of the ground so Mirko temporarily laid out the sheets on the grass.
The grass field can be modeled by an infinite square grid, where every unit square is represented by a pair of coordinates. Sheets are rectangles in the grid with sides parallel to the coordinate axes. Sheets may overlap.
In an effort to put his clothesline back up, Mirko slammed a pole into the ground at coordinates (0, 0). An entirely unexpected turn of events followed. Oil sprung from the ground and the shock caused Mirko to faint. While Mirko lay unconscious, the oil is spreading, staining his sheets.
Time is measured from the moment the oil starts spreading – at time zero only square (0, 0) is covered in oil. The oil is spreading at a speed of one square per second in all eight directions, as shown in the figure below. When oil enters a square, it stains that square of fabric on all sheets covering the square.
Write a program that, given M points in time, calculates the total area of stained fabric on all sheets for each of the given time points.
Input
The first line contains an integer N (1 ≤ N ≤ 100 000), the number of sheets.
Each of the following N lines contains four integers x1, y1, x2 and y2 (−1 000 000 ≤ x1 ≤ x2 ≤ 1 000 000), (−1 000 000 ≤ y1 ≤ y2 ≤ 1 000 000). The coordinates (x1, y1) and (x2, y2) represent diagonally opposite corners of a sheet (again, these coordinates are unit squares, not points on the plane). None of the sheets will cover the square (0, 0).
The next line contains an integer M (1 ≤ M ≤ 100 000), the number of points in time.
The next line contains M integers between 0 and 1 000 000, the time points. They will be given in strictly ascending order.
Output
For each of the time points, output on a separate line the total area of stained fabric on all sheets, in the order the time points are given in the input.
Example
Input: 3 -2 1 1 2 1 0 2 1 -3 -3 -2 0 2 1 2 Output: 5 15
Input: 4 5 1 8 4 -8 1 -5 4 -10 2 10 3 6 0 8 10 6 1 2 3 4 7 9 Output: 0 5 14 18 70 100
Input: 1 1 1 1000000 1000000 3 100 10000 1000000 Output: 10000 100000000 1000000000000
Added by: | Race with time |
Date: | 2009-03-29 |
Time limit: | 1s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | All except: ERL JS-RHINO NODEJS PERL6 VB.NET |
Resource: | Croatian Olympiad in Informatics 28.03.2009. |