Cod sursa(job #2283134)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 15 noiembrie 2018 00:29:06
Problema Adapost 2 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include<fstream>
#include<cmath>
using namespace std;
ifstream cin("adapost2.in");
ofstream cout("adapost2.out");
int n;
double v[50005][2],maxim=1e20,deplasare=100.0,x,y;
double dx[]={0,0,1,-1},dy[]={1,-1,0,0};
double dist(double x1,double y1,double x2,double y2){
    double d1=x1-x2,d2=y1-y2;
    return sqrt(d1*d1+d2*d2);
}
double sdt(double x,double y){
    double sum=0.0;
    for(int i=1;i<=n;i++)
        sum+=dist(v[i][0],v[i][1],x,y);
    return sum;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>v[i][0]>>v[i][1];
    while(deplasare>0.0001){
        int keep=0;
        for(int i=0;i<4;i++){
            double sumtot=sdt(x+dx[i]*deplasare,y+dy[i]*deplasare);
            if(sumtot<maxim){
                maxim=sumtot;
                x+=dx[i]*deplasare;
                y+=dy[i]*deplasare;
                keep=1;
                break;
            }
        }
        if(!keep)deplasare/=10.0;
    }
    cout<<x<<' '<<y;
}