Cod sursa(job #233372)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 17 decembrie 2008 17:25:33
Problema Adapost 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

float A[50001][2];
float X,Y;
int n;

double dist(float x,float y)
{
double s=0;
for (int i=0;i<n;i++) s+= sqrt((A[i][0]-x)*(A[i][0]-x)+(A[i][1]-y)*(A[i][1]-y));
return s;
}

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

fscanf(in,"%d",&n);
int i;

for (i=0;i<n;i++) fscanf(in,"%f%f",&A[i][0],&A[i][1]),X = X+A[i][0],Y = Y+A[i][1];
X = X/n;
Y = Y/n;

double S = dist(X,Y),eror=1;
char ok;

while (eror>0.00001)
{
do
{
ok=1;
if (S>dist(X,Y+eror)) {Y=Y+eror;S=dist(X,Y);ok=0;}
if (S>dist(X,Y-eror)) {Y=Y-eror;S=dist(X,Y);ok=0;}
if (S>dist(X+eror,Y)) {X=X+eror;S=dist(X,Y);ok=0;}
if (S>dist(X-eror,Y)) {X=X-eror;S=dist(X,Y);ok=0;}
} while (!ok);
eror = eror/10;
}

fprintf(out,"%.4f %.4f",X,Y);
}