Cod sursa(job #227208)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 3 decembrie 2008 22:13:52
Problema Adapost 2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include<stdio.h>
#include<math.h>
int n,i;
double a[50002],b[50002],nf,eroare,epsilon=0.0008;
void readd(),remake();
double dist(int i1,int i2);
int main()
{
	readd();
	return 0;
}
void readd()
{
	freopen("adapost2.in","rt",stdin);
	freopen("adapost2.out","wt",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++)scanf("%lf%lf",&a[i],&b[i]);
	if(n==1){printf("%.4lf %.4lf",a[1],b[1]);return;}
	for(i=1;i<=n;i++){a[0]+=a[i];b[0]+=b[i];nf=nf+1;}
	a[0]/=nf;b[0]/=nf;
	for(;;)
	{ remake();
	  eroare=dist(0,n+1);
	  if(eroare<epsilon)break;
	  a[0]=a[n+1];b[0]=b[n+1];
	}
	printf("%.4lf %.4lf",a[0],b[0]);
}
void remake()
{
	double sa,sb,sd,val;
	sa=sb=sd=0;
	for(i=1;i<=n;i++)
	{ val=dist(0,i);
	  sa+=a[i]/val;
	  sb+=b[i]/val;
	  sd+=1/val;
	}
	a[n+1]=sa/sd;
	b[n+1]=sb/sd;
}
double dist(int i1,int i2)
{
	return sqrt((a[i1]-a[i2])*(a[i1]-a[i2])+(b[i1]-b[i2])*(b[i1]-b[i2]));
}