Code:
#include<bits/stdc++.h>
using namespace std;
int n;
int x[1010],y[1010],w[1010];
double ans;
double xx,yy;
const double e=1e-6;
double wor(double dx,double dy)
{
double tot=0;
for(int i=1;i<=n;i++)
tot+=(double)sqrt((x[i]-dx)*(x[i]-dx)+(y[i]-dy)*(y[i]-dy))*(double)w[i];
return tot;
}
double ra(double l,double r)
{
return (double)rand()/(double)RAND_MAX*(r-l)+l;
}
void ran()
{
for(double T=1e4;T>=1e-4;T*=0.994)
{
double lx=xx-T,rx=xx+T,ly=yy-T,ry=yy+T;
double na=ra(lx,rx),nb=ra(ly,ry);
double delta=wor(na,nb)-ans;
if(delta<e) xx=na,yy=nb,ans=wor(na,nb);
else if(exp(-delta/T)>ra(0,1)) xx=na,yy=nb,ans=wor(na,nb);
}
}
int main()
{
srand(time(NULL));
cin>>n;
for(int i=1;i<=n;i++) cin>>x[i]>>y[i]>>w[i];
xx=ra(-10000,10000),yy=ra(-10000,10000);
ans=wor(xx,yy);
//cout<<ra(0,1)<<endl;
for(int i=1;i<=10;i++) ran();
printf("%.3lf %.3lf",xx,yy);
return 0;
}