uses crt;

const
  divider = 200;
  delta = 1/ divider;
var
  sum, none: longint;
  tm_s, tm_f: longint;

var
  found:boolean;
  n,i:integer;
  S2,S1,point_x,point_y,miny,maxy,minx,maxx,r: real;
  mas:array[1..50] of real;
  x, y: array[1 .. 50] of real;


begin
  Clrscr;
  Write('circles amount: '); ReadLn(n);
  WriteLn('Rs: ');
  minx:=0;maxx:=0;
  miny:=0;maxy:=0;

  for i:=1 to n do
   readln(mas[i]);

  for i:=1 to n do begin
    x[i]:=mas[i]*(cos(2*pi/n*(i-1)));
    y[i]:=mas[i]*(sin(2*pi/n*(i-1)));
    writeln(x[i]:2:2,'   ',y[i]:2:2);

    if x[i]-mas[i]<=minx then minx:=x[i]-mas[i];
    if x[i]+mas[i]>=maxx then maxx:=x[i]+mas[i];
    if y[i]-mas[i]<=miny then miny:=y[i]-mas[i];
    if y[i]+mas[i]>=maxy then maxy:=y[i]+mas[i];
  end;

  writeln(minx:2:2,'  ',maxx:2:2,'  ',miny:2:2,'  ',maxy:2:2);
  S1:=(abs(minx)+abs(maxx))*(abs(miny)+abs(maxy));
  writeln('S of rectangle = ',S1:2:2);
  sum:=0; none := 0;

  tm_s:= MemL[$0040:$006c];

  point_x := minx;
  while point_x <= maxx do begin

    point_y := miny;
    while point_y <= maxy do begin

      i := 1; found := False;
      While (i <= n) and not found do begin
        If Sqrt(sqr(point_x-x[i])+sqr(point_y-y[i]))<=mas[i]
        then found:=true else inc(i);
        end;
      if found then sum:=sum+1 else none := none+1;

      point_y := point_y + delta;
    end;

    point_x := point_x + delta;
  end;

  tm_f:= MemL[$0040:$006c];
  tm_f:=tm_f - tm_s;

  writeln('time: ', tm_f);
  writeln('inside: ', sum, ' outside: ', none);
  S2:=S1*(sum/(sum+none));
  writeln('S = ',S2:2:2);
end.