#P12871. Range Convex Checker

Range Convex Checker

Range Convex Checker

Problem Description

定义一个二维平面上的点集 SS 是好的,当且仅当 SS 中所有点都在 SS 的凸包边界上。特别地,若 S=1|S|=1SS 中所有点共线,我们也认为 SS 是好的。 给定平面上 nn两两不同 的点 P1,P2,,PnP_1,P_2,\cdots,P_n,求有多少个区间 [l,r][l,r] 满足 1lrn1\le l\le r\le nSl,r={Pl,Pl+1,,Pr}S_{l,r}=\{P_l,P_{l+1},\cdots,P_r\} 是好的。

Input

第一行输入一个正整数 TT1T125171\le T\le 12517),代表数据组数。 对于每组数据,第一行输入一个整数 nn1n31051\le n\le 3\cdot 10^5),接下来 nn 行每行输入两个整数 xi,yix_i,y_ixi,yi107|x_i|,|y_i|\le 10^7),代表 PiP_i 的坐标为 (xi,yix_i,y_i)。 保证 n106\sum n\le 10^6

Output

对于每组数据,输出一行一个整数,代表满足条件的区间数。

Sample Input

3
6
-1 -1
-1 1
2 -1
2 2
1 0
3 1
6
-2 -4
0 -5
-2 -2
-4 -2
0 -2
3 5
7
-4 4
-1 5
1 5
7 1
2 5
5 6
-5 -3

Sample Output

17
19
22

Source

2025“钉耙编程”中国大学生算法设计暑期联赛(10)