Cod sursa(job #763204)

Utilizator ctlin04UAIC.VlasCatalin ctlin04 Data 1 iulie 2012 14:08:05
Problema Adapost 2 Scor 95
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.3 kb
Program adapost2;
 const eps=0.00001;
  var x,y:array [1..50000] of double;
      p1,p2,s,pas:double;
      i,n:longint;
      ok:boolean;
      fi,fo:text;
function distanta(a,b:double):double;
 var s:double;
begin
s:=0;
 for i:=1 to n do s:=s+sqrt( (x[i]-a)*(x[i]-a)+(y[i]-b)*(y[i]-b) );
distanta:=s;
end;
begin
 assign(fi,'adapost2.in');
  assign(fo,'adapost2.out');
 reset(fi); rewrite(fo); readln(fi,n);
  for i:=1 to n do begin
                      readln(fi,x[i],y[i]);
                       p1:=p1+x[i]; p2:=p2+y[i];
                    end;
   p1:=p1/n; p2:=p2/n; s:=distanta(p1,p2); pas:=1;
  while pas>eps do begin
                    ok:=true;
                     while ok do begin
                      ok:=false;
                      if s>distanta(p1,p2+pas) then begin p2:=p2+pas; s:=distanta(p1,p2); ok:=true; end else
                      if s>distanta(p1,p2-pas) then begin p2:=p2-pas; s:=distanta(p1,p2); ok:=true; end else
                      if s>distanta(p1+pas,p2) then begin p1:=p1+pas; s:=distanta(p1,p2); ok:=true; end else
                      if s>distanta(p1-pas,p2) then begin p1:=p1-pas; s:=distanta(p1,p2); ok:=true; end;
                     end;
                    pas:=pas/10;
                    end;
  write(fo,p1:0:4,' ',p2:0:4);
 close(fo);
end.