Pagini recente » Cod sursa (job #59677) | Cod sursa (job #2748451) | Cod sursa (job #1321361) | Cod sursa (job #204659) | Cod sursa (job #40443)
Cod sursa(job #40443)
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#define TMIC 0.0000001
#define STEP 0.9
#define TSTART 50
#define NP 50000
long n;
double x[NP],y[NP];
double sx,sy,ax=0,ay=0,d,sd;
double dist(double px,double py)
{
double dt=0;
long i;
for(i=0;i<n;i++)
dt+=sqrt((px-x[i])*(px-x[i])+(py-y[i])*(py-y[i]));
return dt;
}
void cit()
{
long i;
FILE *f=fopen("adapost2.in","r");
fscanf(f,"%d",&n);
for(i=0;i<n;i++)
{
fscanf(f,"%lf %lf",&x[i],&y[i]);
ax+=x[i]/n;
ay+=y[i]/n;
}
fclose(f);
}
void tip()
{
FILE *f;
f=fopen("adapost2.out","w");
fprintf(f,"%.4lf %.4lf\n",sx,sy);
fclose(f);
}
void rez()
{
double t;
sd=dist(ax,ay);
sx=ax;
sy=ay;
for(t=TSTART;t>TMIC;)
{
d=0;
d=dist(sx,sy+t);
if(d<sd)
{
sd=d;
sy+=t;
t*=STEP;
}
d=0;
d=dist(sx,sy-t);
if(d<sd)
{
sd=d;
sy-=t;
t*=STEP;
}
d=0;
d=dist(sx+t,sy);
if(d<sd)
{
sd=d;
sx+=t;
t*=STEP;
}
d=0;
d=dist(sx-t,sy);
if(d<sd)
{
sd=d;
sx-=t;
t*=STEP;
}
t*=STEP;
}
}
int main()
{
cit();
rez();
tip();
return 0;
}