Cod sursa(job #2078165)

Utilizator Andrei243Nitu Mandel Andrei Andrei243 Data 28 noiembrie 2017 23:29:37
Problema Adapost 2 Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#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/=10){

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;
}