IOI '04 P3 - Polygon
View as PDFA polygon consists of all points on or enclosed by its border.
A convex polygon has the property that for any two points  and 
 of the polygon, the line segment connecting 
 and 
 is inside the polygon.
All polygons in this task are convex polygons with at least two vertices, and all vertices in a polygon are different and have integer coordinates.
No three vertices of a polygon are collinear.
The word "polygon" below always refers to such polygons.
Given two polygons  and 
, the Minkowski sum of 
 and 
 consists of all the points of the form 
 where 
 is a point in 
 and 
 is a point in 
.
It turns out that the Minkowski sum of polygons is also a polygon.
The figure below shows an example: two triangles and their Minkowski sum.
We study a reverse operation to the Minkowski sum. For a given polygon , we are looking for two polygons 
 and 
 such that:
is the Minkowski sum of
and
,
has from
to
different vertices, i.e. it is a segment (2 vertices), a triangle (3 vertices) or a quadrilateral (4 vertices),
should have as many vertices, as possible, i.e.:
should be a quadrilateral, if possible,
- if 
cannot be a quadrilateral, it should be a triangle, if possible,
 - otherwise it should be a segment.
 
Clearly, neither  nor 
 can be equal to 
 because then the other summand would have to be a point, which is not a valid polygon.
You are given a set of input files, each containing a description of a polygon .
For each input file you should find the polygons 
 and 
, as required above, and create an output file containing descriptions of 
 and 
.
For the given input files, such polygons 
 and 
 can always be found.
If there are many correct results, you should find and output one of them.
Input Specification
The first line contains one integer  
, the index of the test case.
 indicates that this is a sample test case.
The second line contains one integer , the number of vertices of the polygon 
.
The following  lines each contain two integers 
, the coordinates of the 
-th vertex of the polygon.
The vertices are given in counter-clockwise order.
All input coordinates are non-negative integers.
Since this is intended to be an output-only problem, when you submit, you can submit a program that only prints the answer based on the test case number in the first line, and run your program locally to get the answer for each test case.
You can view the input files at polygon.zip.
Output Specification
In the first line, output an integer  
, the number of vertices in polygon 
.
In the following  lines, output two integers 
 
, representing the coordinates of a vertex of polygon 
.
The vertices should be given in counter-clockwise order.
In the next line, output an integer  
, the number of vertices in polygon 
.
In the following  lines, output two integers 
 
, representing the coordinates of a vertex of polygon 
.
The vertices should be given in counter-clockwise order.
Sample Input
5
0 1
0 0
2 0
2 1
1 2
Sample Output 1
3
0 0
2 0
1 1
2
0 1
0 0
Sample Output 2
3
0 0
1 0
1 1
3
0 1
0 0
1 0
Explanation for Sample
For the sample input, either of the two outputs above are correct since in both cases  is a triangle and it cannot be a quadrilateral.
Comments