Cod sursa(job #1046629)

Utilizator geniucosOncescu Costin geniucos Data 3 decembrie 2013 11:31:21
Problema Adapost 2 Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include<cstdio>
#include<cmath>
using namespace std;
int i,n,how,k;
double rat,mini,C[6],xs,ys,xp,yp,x[50009],y[50009];
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
double cost(double X,double Y)
{
    int i;
    double ras=0;
    for(i=1;i<=n;i++)
        ras=(double)ras+pow((X-x[i])*(X-x[i])+(Y-y[i])*(Y-y[i]),0.5);
    return ras;
}
int main()
{
freopen("adapost2.in","r",stdin);
freopen("adapost2.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
    scanf("%lf%lf",&x[i],&y[i]);
xs=ys=0;
for(rat=1000;rat>=0.00001;rat/=10)
{
    while(1)
    {
        how=4;
        mini=cost(xs,ys);
        for(k=0;k<4;k++)
        {
            xp=(double)xs+(double)dx[k]*rat;
            yp=(double)ys+(double)dy[k]*rat;
            C[k]=cost(xp,yp);
            if(C[k]<mini)
            {
                mini=C[k];
                xs=xp;
                ys=yp;
                how=k;
            }
        }
        if(how==4) break;
    }
    i=0;
}
printf("%.4lf %.4lf\n",xs,ys);
return 0;
}