Cod sursa(job #2785168)

Utilizator AndreidreiGresoiu Liviu-Andrei Andreidrei Data 18 octombrie 2021 08:54:51
Problema Adapost 2 Scor 92
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.38 kb
#include <bits/stdc++.h>
#define din cin
#define dout out
#define pi 3.14159265359
#define sw(x,y) x^=y,y^=x,x^=y
#define min(a,b)((a<b)?(a):(b))
#define max(a,b)((a>b)?(a):(b))
#define ll long long
using namespace std;
ifstream in("adapost2.in");
ofstream out("adapost2.out");
long double m[50000][2],t[25],*k,x,y,r[4],a=500,b=500,rmax=DBL_MAX;int n,i,j,e,f,aa,bb,ee,ff;
#define xx (x-m[i][0])
#define yy (y-m[i][1])
void c(){
*k=0;
for(i=0;i<n;i++)
    *k+=sqrt(xx*xx+yy*yy);
}
#define qmax 18
int main()
{
t[0]=250;
for(i=1;i<25;i++)t[i]=t[i-1]/2;
in>>n;
for(i=0;i<n;i++)in>>m[i][0]>>m[i][1];
while(e<qmax||f<qmax)
{
ee=ff=0;
x=a+t[e],y=b,k=&r[0];c();
if(r[0]<rmax){
    rmax=r[0],ee=2;
    a+=t[e];
    if(aa!=1&&aa!=0)e=min(e+1,19);
    aa=1;
    }
x=a,y=b+t[f],k=&r[0];c();
if(r[0]<rmax){
        rmax=r[0],ff=2;
        b+=t[f];
    if(bb!=1&&bb!=0)f=min(f+1,19);
    bb=1;
    }
x=a-t[e],y=b,k=&r[0];c();
if(r[0]<rmax){
    rmax=r[0],ee-=1;
    a-=t[e];
    if(aa!=-1&&aa!=0)e=min(e+1,19);
    aa=-1;
}
x=a,y=b-t[f],k=&r[0];c();
    if(r[0]<rmax){
        rmax=r[0],ff-=1;
        b-=t[f];
    if(bb!=-1&&bb!=0)f=min(f+1,19);
    bb=-1;
    }
if(ee==0)e=min(e+2,19),aa=0;
if(ff==0)f=min(f+2,19),bb=0;
//cout<<r[0]<<' '<<r[1]<<' '<<k-r<<' ';
//cout<<a<<' '<<b<<' '<<e<<' '<<aa<<' '<<f<<' '<<bb<<'\n';
}
out<<fixed<<setprecision(4)<<a<<' '<<b;
}