Cod sursa(job #2785042)

Utilizator AndreidreiGresoiu Liviu-Andrei Andreidrei Data 17 octombrie 2021 21:03:59
Problema Adapost 2 Scor 61
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.4 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");
double mm[50000][2];int n,i,j,e,f,aa,bb;long long m[50000][2],t[20],*k,x,y,r[4],a=500000000,b=500000000;
#define xx (x-m[i][0])
#define yy (y-m[i][1])
#define tint(x)round((x*1000000))
void c(){
*k=0;
for(i=0;i<n;i++)
    *k+=sqrt(xx*xx+yy*yy+0ll);
}
int main()
{
t[0]=250000000;
for(i=1;i<20;i++)t[i]=t[i-1]/2;
in>>n;
for(i=0;i<n;i++)in>>mm[i][0]>>mm[i][1],m[i][0]=tint(mm[i][0]),m[i][1]=tint(mm[i][1]);
while(e<19||f<19)
{
//voi cauta binar intr-un fel ce modificari sa-i fac lui x si y
x=a+t[e],y=b,k=&r[0];c();
x=a-t[e],y=b,k=&r[1];c();
if(r[0]<r[1]){
    a+=t[e];
    if(aa>0)e=max(e-1,0);else e=min(e+1,19),aa=1;
}
else{
    a-=t[e];
    if(aa<0)e=max(e-1,0);else e=min(e+1,19),aa=-1;
}
x=a,y=b+t[f],k=&r[0];c();
x=a,y=b-t[f],k=&r[1];c();
if(r[0]<r[1]){
    b+=t[f];
    if(bb>0)f=max(f-1,0);else f=min(f+1,19),bb=1;
}
else{
    b-=t[e];
    if(a<0)f=max(f-1,0);else f=min(f+1,19),bb=-1;
}
//cout<<r[0]<<' '<<r[1]<<' '<<k-r<<' ';
//cout<<a<<' '<<b<<' '<<e<<' '<<aa<<' '<<f<<' '<<bb<<'\n';
}
//out<<fixed<<setprecision(4)<<a<<' '<<b;
out<<a/1000000<<'.'<<a%1000000<<' '<<b/1000000<<'.'<<b%1000000;
}