Description
在平面直角坐标系中,Wayne需要你完成n次操作,操作只有两种:
1.0 x y。表示在坐标系中加入一个以(x, y)为圆心且过原点的圆。
2.1 x y。表示询问点(x, y)是否在所有已加入的圆的内部(含圆周),且至少在一个圆内部(含圆周)。
为了减少你的工作量,题目保证圆心严格在x轴上方(纵坐标为正),且横坐标非零。
Input
第1行一个整数n。
接下来n行,每行第一个数是0或1,分别表示两种操作。
接着有两个实数x和y,具体意义见题面。注意询问进行了加密,x和y需要加上之前回答Yes的数量得到真正的询问。
Output
对于每个询问操作,如果点在所有已加入的圆内(或圆周上),则输出“Yes”(不含引号);否则输出“No”(不含引号)。
Sample Input
5
0 2.000000 3.000000
0 4.000000 1.000000
1 1.000000 1.000000
0 -4.000000 1.000000
1 0.000000 0.000000
Sample Output
Yes
No
HINT
Source
鸣谢talw001上传
改题的人绝对是个大毒瘤!好好地cdq加什么强制在线!
只好上二进制分组了
结果发现自己之前没写过二进制分组并不怎么会写…只好看了一发Claris模板然后幡然醒悟
为什么学的Claris模板然而时间就是比人家多2s
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define MAXN 500010
using namespace std;
int n,opt,top,num;
int l[32],r1[32],r2[32];
bool t;
double A,B,C,sum;
double sqr(double x) {
return x*x;}
struct Point
{
double x