Cod sursa(job #762309)

Utilizator ion824Ion Ureche ion824 Data 29 iunie 2012 18:14:38
Problema Adapost 2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<fstream>
#include<iomanip>
#include<cmath>
using namespace std;
const double eps=0.0001;
int N,i;
double x[50005],y[50005],daux;

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

int main(void){
    ifstream fin("adapost2.in");
    ofstream fout("adapost2.out");
    int i; bool ch;
    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){   
        ch=0;                 
        if((aux = verific(midx+pasx,midy))<W){ midx+=pasx; W=aux; if(!ch)ch=1;/*continue; */}
        if((aux = verific(midx,midy+pasx))<W){ midy+=pasx; W=aux; if(!ch)ch=1;/* continue;*/ }
        if((aux = verific(midx-pasx,midy))<W){ midx-=pasx; W=aux; if(!ch)ch=1;/*continue; */}
        if((aux = verific(midx,midy-pasx))<W){ midy-=pasx; W=aux; if(!ch)ch=1;/*continue; */}
        if(!ch)pasx/=2;                          
            }
    fout<<setprecision(4)<<fixed;
    fout<<midx<<' '<<midy<<'\n';
 return 0;   
}