#L2825. 「BalticOI 2014 Day2」界限划定

    ID: 5217 传统题 1000ms 256MiB 尝试: 10 已通过: 1 难度: 10 上传者: 标签>计算几何离散化与扫描几何图形的交与并坐标变换数据结构队列模拟

「BalticOI 2014 Day2」界限划定

题目描述

本题译自 BalticOI 2014 Day2 T1「Demarcation」

多年以来,Bytopia 岛都被公正的拜亚提国王统治。但是在国王突然去世之后,他的两个儿子—— Biteon 和 Byteon 都希望自己能成为新国王。因此,他们决定把整个岛分为两个行省去独立管理。

在一张矩形的地图上,Bytopia 岛是一个具有 NN 个顶点的多边形。多边形的每一条边都平行于地图的一边,并且每两条相邻的边互相垂直。除相邻边的公共端点之外,多边形的任意两条边互不相交。

Biteon 和 Byteon 希望使用一条在多边形上的直线,把整个图形划分成完全相同的两部分。当且仅当其中一个图形通过对称,平移,旋转能与另一个多边形重合时,两个多边形全等。保证多边形的顶点坐标和分割线的端点坐标是整数。

国王的儿子们要求你验证是否存在这样一种分割方案。给出岛屿的形状,验证它是否可以被一个水平或垂直的线段分割成两个全等的部分。如果可以的话,找出这样一条线段。


输入格式

第一行一个正整数 NN,表示多边形的顶点数。
接下来的 NN 行,每行一对正整数 (Xi,Yi)(X_i,Y_i),表示第 ii 个顶点的坐标。
顶点是按照顺序给出的,也即 (X1,Y1)(X2,Y2)(X_1, Y_1) - (X_2, Y_2)(X2,Y2)(X3,Y3)(X_2,Y_2) - (X_3, Y_3)\dots(XN1,YN1)(XN,YN)(X_{N-1}, Y_{N-1}) - (X_N , Y_N)(XN,YN)(X1,Y1)(X_N , Y_N ) - (X_1, Y_1) 是多边形的所有边。
除此之外,任意两条相邻的线段都互相垂直。


输出格式

输出仅一行。如果存在一种方案,使得岛屿能被一条端点为 (x1,y1)(x_1,y_1)(x2,y2)(x_2,y_2) 的水平或垂直的线段划分为全等的两个部分,那么输出 44 个用空格分开的整数 x1,y1,x2x_1,y_1,x_2y2y_2。要求 x1=x2x_1 = x_2y1=y2y_1 = y_2
这条线段必须在多边形内部,且只有其端点才能接触边界。如果找不到合适的划分方案,则输出 NO


样例 1

输入

10
0 0
1 0
1 1
3 1
3 5
2 5
2 3
1 3
1 2
0 2

输出

1 2 3 2

注意,3 2 1 2 也是一种合法的方案。


样例 2

输入

6
0 0
1 0
1 1
2 1
2 2
0 2

输出

NO

这种情况下,找不到一组合法的解。


数据范围与提示

子任务 分数 数据范围 附加限制
1 12 4N1054 \le N \le 10^5 所有分割多边形的水平或垂直线都恰好将其分为两部分
2 15 4N2004 \le N \le 200
3 23 4N20004 \le N \le 2000
4 50 4N1054 \le N \le 10^5