Pagini recente » Cod sursa (job #3183548) | Cod sursa (job #329442) | Cod sursa (job #1059157) | Cod sursa (job #361020) | Cod sursa (job #487892)
Cod sursa(job #487892)
#include<fstream>
#include<algorithm>
#include<cmath>
#define point pair<double,double>
#define x first
#define y second
using namespace std;
const char iname[]="adapost2.in";
const char oname[]="adapost2.out";
const int maxn=50006;
ifstream f(iname);
ofstream g(oname);
double dis(point a,point b)
{
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int n,i;
point a[maxn],p,q;
double m,aux,eps=1e-5;
int main()
{
f>>n;
if(n==1)
{
f>>a[i].x>>a[i].y;
g.setf(ios::fixed,ios::floatfield);
g.precision(4);
g<<a[i].x<<" "<<a[i].y<<"\n";
return 0;
}
for(i=1;i<=n;++i)
f>>a[i].x>>a[i].y,p.x+=a[i].x,p.y+=a[i].y;
p.x/=n;
p.y/=n;
while(1)
{
q.x=q.y=m=0;
for(i=1;i<=n;++i)
aux=dis(a[i],p),m+=1.0/aux,q.x+=a[i].x/aux,q.y+=a[i].y/aux;
q.x/=m;
q.y/=m;
if(dis(p,q)<eps)
break;
p=q;
}
g.setf(ios::fixed,ios::floatfield);
g.precision(4);
g<<p.x<<" "<<p.y<<"\n";
}