Pagini recente » Cod sursa (job #480261) | Cod sursa (job #2321365) | Cod sursa (job #546732) | Cod sursa (job #1047481) | Cod sursa (job #403166)
Cod sursa(job #403166)
#include <cmath>
#include <vector>
#include <cstdio>
#include <cstdlib>
/*
*
*/
using namespace std;
struct pr
{
double first, second;
pr() { first=second=0; }
}p, p2;
vector< pr > v;
const short dx[]={ -1, 0, 0, 1 }, dy[]={ 0, -1, 1, 0 };
double distance( pr p )
{
double d=0;
for( unsigned i=0, N=v.size(); i < N; ++i )
d+=sqrt( ( v[i].first-p.first )*( v[i].first-p.first ) + ( v[i].second-p.second )*( v[i].second-p.second ) );
return d;
}
void search( void )
{
unsigned int i;
double pas=1<<10, d2, d=distance( p );
while( pas >= 0.001 )
{
for( i=0; i < 4; ++i )
{
p2.first=p.first+dx[i]*pas;
p2.second=p.second+dy[i]*pas;
d2=distance( p2 );
if( d2 < d )
{
fprintf( fopen( "adapost2.out", "wt" ), "%lf %lf", p2.first, p2.second );
exit( 0 );
}
}
pas/=2;
}
fprintf( fopen( "adapost2.out", "wt" ), "%lf %lf", p.first, p.second );
}
int main( void )
{
int n;
freopen( "adapost2.in", "rt", stdin );
scanf( "%d", &n );
for( ; n; --n )
{
scanf( "%lf %lf", &p2.first, &p2.second );
v.push_back( p2 );
p.first+=p2.first;
p.second+=p2.second;
}
n=v.size();
p.first/=n;
p.second/=n;
search();
return 0;
}