U130370 【模板】二维凸包(加强版)

题目描述

这是二维凸包模板题(超级加强)。 给定平面直角坐标系上 $n$ 个点,请你求出它们的凸包。 当然这样还不够,您还需要求出这个凸包的周长、面积。 此外,还有 $m$ 个询问,需要您回答某个点是否在凸包内(或边界上)。

输入格式

第 $1$ 行 $2$ 个正整数 $n,m$,分别表示点的个数和询问个数。 接下来 $n$ 行,每行 $2$ 个整数,分别表示点的横、纵坐标。 接下来 $m$ 行,每行 $2$ 个整数,分别表示询问点的横、纵坐标。

输出格式

共 $m+2$ 行。 第 $1$ 行为 $1$ 个正整数,表示凸包周长**四舍五入到整数**。 第 $2$ 行为 $1$ 个正整数,表示凸包面积的$2$**倍**。 接下来 $m$ 行,每行 $1$ 个数为`0`或`-1`或`1`,其中`0`表示点在凸包上,`1`表示点在凸包内,`-1`表示点在凸包外。

说明/提示

共10组数据,前5组满足$m=0$。数据有一定梯度。 对于$100\%$的数据,$n,m\le 1 \times 10^6$,坐标的绝对值在 $10^9$ 范围内。 强度足够,凸包顶点约占所有点的一半。 询问的点50%为随机取,10%为凸包顶点,40%在凸包边附近取。 仅用于复杂度和常数测试,不保证hack错解。