Description
以雷达心为圆心的半圆形雷达覆盖范围有多个点 雷达可旋转,求最多覆盖数(含在边界的)
Sample Input
25 25 3.5------雷达坐标与半径
7----------点数
25 28-------点坐标
23 27
27 27
24 23
26 23
24 29
26 29
350 200 2.0
5
350 202
350 199
350 198
348 200
352 200
995 995 10.0
4
1000 1000
999 998
990 992
1000 999
100 100 -2.5
Sample Output
3 44
var x,y:array[0..1001] of longint; x1,y1,z1,n,i,k,l,j,m,q,x0,y0,p:longint; r:real; min:array[0..1001] of longint; procedure main(a:real;b:longint); var r:real; q,i,j,m,right,left,ans,max:longint; begin q:=0; max:=0; right:=0; left:=0; ans:=0; for i:=1 to n do begin r:=sqrt(sqr(x[i]-x0)+sqr(y[i]-y0)); if r<=a then begin inc(q); min[q]:=i; end; end; for i:=1 to q do begin for j:=1 to q do begin m:=(x[min[i]]-x0)*(y[min[j]]-y0)-(x[min[j]]-x0)*(y[min[i]]-y0); if m>0 then inc(right); if m<0 then inc(left); if m=0 then inc(ans); end; if right+ans>max then max:=right+ans; if left+ans>max then max:=left+ans; left:=0; right:=0; ans:=0; end; writeln(max); end; begin r:=1; p:=1; while true do begin readln(x0,y0,r); if r<0 then exit; readln(n); for i:=1 to n do readln(x[i],y[i]); main(r,p); fillchar(x,sizeof(x),0); fillchar(y,sizeof(y),0); inc(p); end; end.