Cod sursa(job #762310)

Utilizator ion824Ion Ureche ion824 Data 29 iunie 2012 18:17:50
Problema Adapost 2 Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<fstream>
#include<iomanip>
#include<cmath>
using namespace std;
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){
    ifstream fin("adapost2.in");
    ofstream fout("adapost2.out");
    int i;
    double midx=0,midy=0,pasx,W,aux;
    fin>>N;
    for(i=1;i<=N;++i){
      fin>>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;                          
            }
    fout<<setprecision(4)<<fixed;
    fout<<midx<<' '<<midy<<'\n';
 return 0;   
}