Pagini recente » Cod sursa (job #1292279) | Monitorul de evaluare | Profil crina_tomi | Cod sursa (job #1536091) | Cod sursa (job #2078170)
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>
#include <stdlib.h>
using namespace std;
int n;
ifstream in("adapost2.in");
ofstream out("adapost2.out");
struct punct{
double x,y;
};
vector<punct> soldati;
double lungime(punct z){
double l=0;
for(int i=0;i<soldati.size();i++){
l+=sqrt(pow(z.x-soldati[i].x,2)+pow(z.y-soldati[i].y,2));
}
//cout<<l<<endl;
return l;
}
punct minim(punct a,punct b){
if(lungime(a)<=lungime(b))return a;
return b;
}
punct centru_de_greutate(){
double x_g=0;
double y_g=0;
for(int i=0;i<n;i++){
x_g+=soldati[i].x;
y_g+=soldati[i].y;
}
x_g/=(double)n;
y_g/=(double)n;
punct centru;
centru.x=x_g;
centru.y=y_g;
return centru;
}
int main()
{in>>n;
for(int i=1;i<=n;i++){
punct z;
in>>z.x>>z.y;
soldati.push_back(z);
}
punct c=centru_de_greutate();
for(double i=100;i>0.00001;i/=5){
punct a,b,d,e;
a.x=c.x;
a.y=c.y+i;
b.x=c.x+i;
b.y=c.y;
d.x=c.x;
d.y=c.y-i;
e.x=c.x-i;
e.y=c.y;
punct aux;
aux=c;
c=minim(a,minim(b,minim(c,minim(d,e))));
while(c.x!=aux.x || c.y!=aux.y) {
a.x=c.x;
a.y=c.y+i;
b.x=c.x+i;
b.y=c.y;
d.x=c.x;
d.y=c.y-i;
e.x=c.x-i;
e.y=c.y;
aux=c;
c=minim(a,minim(b,minim(c,minim(d,e))));
}
}
out<<c.x<<" "<<c.y;
return 0;
}