Cod sursa(job #2777829)

Utilizator AndreidreiGresoiu Liviu-Andrei Andreidrei Data 25 septembrie 2021 09:17:45
Problema Adapost 2 Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.19 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)
using namespace std;
ifstream in("adapost2.in");
ofstream out("adapost2.out");
long double m[50000][2],t[20],*k,x,y,r[4],a=500,b=500;int n,i,j,e,f,aa,bb;
#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);
}
int main()
{
t[0]=250;
for(i=1;i<20;i++)t[i]=t[i-1]/2;
in>>n;
for(i=0;i<n;i++)in>>m[i][0]>>m[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;
}