Pagini recente » Cod sursa (job #2690363) | Cod sursa (job #1335978) | Cod sursa (job #2697911) | Cod sursa (job #1320785) | Cod sursa (job #1046586)
#include<stdio.h>
#include<math.h>
FILE*f=fopen("adapost2.in","r");
FILE*g=fopen("adapost2.out","w");
int n;
struct punct
{
double x,y;
} v[50001];
double dist(double x,double y)
{
return sqrt(y*y+x*x);
}
double calc(double x,double y)
{
double sum=0;
for( register int i=1;i<=n;++i)
sum+=dist(x-v[i].x,y-v[i].y);
return sum;
}
double min(double a,double b)
{
if(a<b)
return a;
return b;
}
int main()
{
fscanf(f,"%d",&n);
for(int i=1;i<=n;++i)
fscanf(f,"%lf%lf",&v[i].x,&v[i].y);
int ok=1;
double x=5000;
double y=5000;
double p=5000;
double sum=calc(x,y);
while(p>=0.0005)
{
double sum1,sum2,sum3,sum4;
sum1=calc(x-p,y);
if(sum1<sum)
{
x-=p;
sum=sum1;
continue ;
}
sum1=calc(x+p,y);
if(sum1<sum)
{
x+=p;
sum=sum1;
continue ;
}
sum1=calc(x,y-p);
if(sum1<sum)
{
y-=p;
sum=sum1;
continue ;
}
sum1=calc(x,y+p);
if(sum1<sum)
{
y+=p;
sum=sum1;
continue ;
}
p/=2;
}
fprintf(g,"%.4lf %.4lf",x,y);
fclose(f);
fclose(g);
return 0;
}