Pagini recente » Cod sursa (job #1001288) | Cod sursa (job #2065037) | Cod sursa (job #1570547) | Cod sursa (job #1601872) | Cod sursa (job #337698)
Cod sursa(job #337698)
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <stack>
#include <list>
#include <set>
#include <algorithm>
#include <utility>
#include <string>
#include <functional>
#include <sstream>
#include <fstream>
#include <cmath>
using namespace std;
#define FOR(i,a,b) for (i=(a);i<=(b);i++)
#define fori(it,v) for (it=(v).begin();it!=(v).end();it++)
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define all(c) c.begin(),c.end()
#define pf push_front
#define popb pop_back
#define popf pop_front
typedef pair<int,int> ii;
FILE *in,*out;
const int inf=1<<30;
const double eps=0.0001;
double x[50005],y[50005];
double modul(double x)
{
if (x<0)
return -x;
return x;
}
double dist(double x1,double y1,double x2,double y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{
int n,i;
double xm=0,ym=0,b,aux,xv,yv;
in=fopen("adapost2.in","r");
out=fopen("adapost2.out","w");
fscanf(in,"%d",&n);
FOR(i,1,n)
{
fscanf(in,"%lf%lf",&x[i],&y[i]);
xm+=x[i];
ym+=y[i];
}
xv=-inf;
yv=inf;
xm/=n;
ym/=n;
while (modul(xv-xm)>=eps||modul(yv-ym)>=eps)
{
xv=xm;
yv=ym;
xm=ym=b=0;
FOR(i,1,n)
{
aux=1/dist(xv,yv,x[i],y[i]);
xm+=x[i]*aux;
ym+=y[i]*aux;
b+=1/dist(xv,yv,x[i],y[i]);
}
xm/=b;
ym/=b;
}
fprintf(out,"%lf %lf\n",xm,ym);
fclose(in);
fclose(out);
return 0;
}