import
java.util.*;
class
GFG {
public
static
void
preprocess(
int
p[],
int
x[],
int
y[],
int
n)
{
for
(
int
i =
0
; i < n; i++)
p[i] = x[i] * x[i] + y[i] * y[i];
Arrays.sort(p);
}
public
static
int
query(
int
p[],
int
n,
int
rad)
{
int
start =
0
, end = n -
1
;
while
((end - start) >
1
) {
int
mid = (start + end) /
2
;
double
tp = Math.sqrt(p[mid]);
if
(tp > (rad *
1.0
))
end = mid -
1
;
else
start = mid;
}
double
tp1 = Math.sqrt(p[start]);
double
tp2 = Math.sqrt(p[end]);
if
(tp1 > (rad *
1.0
))
return
0
;
else
if
(tp2 <= (rad *
1.0
))
return
end +
1
;
else
return
start +
1
;
}
public
static
void
main(String[] args)
{
int
x[] = {
1
,
2
,
3
, -
1
,
4
};
int
y[] = {
1
,
2
,
3
, -
1
,
4
};
int
n = x.length;
int
p[] =
new
int
[n];
preprocess(p, x, y, n);
System.out.println(query(p, n,
3
));
System.out.println(query(p, n,
32
));
}
}