三角形广场
题号:NC318523
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

给定平面上的 n 个建筑(n 个点逆时针给出,保证一定是凸包),作为王国首席规划师的你想在这些建筑中建两个三角形广场,要求:
1. 每个三角形广场的端点为三个不同的建筑;
2. 两个三角形广场不共享任何端点处的建筑;
3. 两个三角形广场的内部不相交,边界不相交。
请你计算出如何构建这两个三角形广场使得两个三角形广场面积之和最大。

输入描述:

第一行一个整数 T (1\leq T \leq 200),表示数据组数。
对于每组数据,第一行一个整数 n (6\leq n\leq 5000),表示建筑的数量。
接下来 n 行,第 i 行两个整数 x_i, y_i (-10^9 \leq x_i,y_i \leq 10^9),表示第 i 个建筑的坐标。
保证建筑按照逆时针顺序给出,且所有建筑构成一个凸多边形,每个建筑是该凸多边形的一个端点,任意三个建筑不共线。
保证单个测试点内所有数据中 n 的和不超过 5000

输出描述:

对于每组数据,输出一行一个整数,表示最大三角形面积之和乘 2
示例1

输入

复制
1
6
-1 -1
1 -1
2 0
1 1
-1 1
-2 0

输出

复制
4