Cod sursa(job #762311)

Utilizator ion824Ion Ureche ion824 Data 29 iunie 2012 18:20:59
Problema Adapost 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include<cstdio>
#include<iomanip>
#include<cmath>
const double eps=0.0001;
int N,i;
double x[50005],y[50005],xx,yy,daux;

double verific(double midx,double midy){
       daux=0;
       for(i=1;i<=N;++i){
        xx=x[i]-midx; yy=y[i]-midy; 
        xx*=xx; yy*=yy;     
        daux+=sqrt(xx+yy);
        }              
  return daux;      
}

int main(void){
    freopen("adapost2.in","r",stdin);
    freopen("adapost2.out","w",stdout);
    int i;
    double midx=0,midy=0,pasx,W,aux;
    scanf("%d",&N);
    for(i=1;i<=N;++i){
      scanf("%lf%lf",&x[i],&y[i]);
      midx+=x[i]; midy+=y[i];
      }
    midx/=N; midy/=N; pasx=512;
    W=verific(midx,midy);
    while(pasx>=eps){                    
        if((aux = verific(midx+pasx,midy))<W){ midx+=pasx; W=aux; continue; }
        if((aux = verific(midx,midy+pasx))<W){ midy+=pasx; W=aux; continue; }
        if((aux = verific(midx-pasx,midy))<W){ midx-=pasx; W=aux; continue; }
        if((aux = verific(midx,midy-pasx))<W){ midy-=pasx; W=aux; continue; }
        pasx/=2;                          
            }
    printf("%.4lf %.4lf\n",midx,midy);
 return 0;   
}