Cod sursa(job #1044070)

Utilizator jul123Iulia Duta jul123 Data 29 noiembrie 2013 11:56:53
Problema Adapost 2 Scor 47
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#include<iostream>
#include<cstdio>
#include<cmath>
#define eps 0.0000001
using namespace std;
typedef struct un_punct
{
    double x;
    double y;
}punct;
punct p[50000];

double distanta(double x1, double y1, double x2, double y2)
{
    return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
}


int main()
{
    FILE *fin, *fout;
    fin=fopen("adapost2.in","r");
    fout=fopen("adapost2.out","w");

    int n, aux, i, j;
    double a, b, pas,s, pa, pb, smin=1000000;
    fscanf(fin, "%d", &n);
    for(i=0; i<n; i++)
    {
        fscanf(fin, "%lf %lf", &p[i].x, &p[i].y);
    }
    a=p[0].x;
    b=p[0].y;
    pas=1000;
    while(pas>0.0001)
    {
        double da[]={pas, -pas, 0, 0};
        double db[]={0, 0, pas, -pas};
        aux=-1;
        for(j=0; j<4; j++)
        {
        pa=a+da[j];
        pb=b+db[j];
        s=0;
        for(i=0; i<n; i++)
        {
            s+=distanta(pa, pb, p[i].x, p[i].y);

        }
        if(s-smin<eps)
        {
            smin=s;
            aux=j;
        }
        }
        if(aux!=-1)
        {
            a=a+da[aux];
            b=b+db[aux];
        }
            pas/=2;
    }
        fprintf(fout, "%lf %lf", a, b);

    }