Spider and Fly
Может быть, я туплю, но имеется ввиду расстояние между точками А(муха) и В(паук), или расстояние, представляющее путь от В до А?
Кажется очень слабые тесты, к примеру тест 500 500 500 400 1 0 1 300 правильный ответ 500.60 а проходит код который выдает 700
var a, b, c, x1, y1, x2, y2, z2:longint; r, r1, r2, r3, r4, min:real; function min2(x, y:real):real; begin if x<y then min2:=x else min2:=y; end; function s(xa, ya, xb, yb:longint):real; begin s:=sqrt(sqr(xa-xb)+sqr(ya-yb)); end; procedure out; begin writeln (r:0:2); halt; end; begin readln (a, b, c); readln (x1, y1, x2, y2, z2); if z2=0 then begin r:=s(x1, y1, x2, y2); out; end; if x2=0 then begin if y2=b then if x1+y1<b then begin r:=s(x1, y1, -z2, y2); out;end; r:=s(x1, y1, -z2, y2); out; end; if x2=a then begin r:=s(x1, y1, a+z2, y2); out; end; if x2=b then begin r:=s(x1, y1, b+z2, y2); out; end; if y2=0 then begin r:=s(x1, y1, x2, -z2); out; end; if (y2=b) and (x2<>0) then begin r:=s(x1, y1, x2, b+z2); out; end; if y2=a then begin r:=s(x1, y1, x2, a+z2); out; end; end.
Я реально настолько тупой что немогу понять как быстро переместится, кроме как спустится вниз по стене а потом по плоскости по прямой к мухе? Настолько тупой чтобы понять зачем мне размер комнаты?
Говориться что паук может быть на полу или на потолке. Значит, если паучара на полу то тогда его z координата это 0 и он может добраться к мухе по вектору. А когда он на стене тогда начинается настоящий ад. Надо строить то ли вектор, а потом его проекции на стену паучка и пол. Стрёмный в общем паук. По идее, он ещё может до потолка долезть а потом спуститься.
Если я правильно понимаю, то паук может двигаться только по стенам и полу?
var a, b, c, x1, y1, x2, y2, z2:longint; r, r1, r2, r3, r4, min:real;
function s(xa, ya, xb, yb:longint):real; begin s:=sqrt(sqr(xa-xb)+sqr(ya-yb)); end;
procedure out; begin writeln (r:0:2); halt; end;
begin readln (a, b, c); readln (x1, y1, x2, y2, z2); if z2=0 then begin r:=s(x1, y1, x2, y2); out; end; if x2=0 then begin if y2=b then if x1+y1<b then begin r:=s(x1, y1, -z2, y2); out; end; r:=s(x1, y1, -z2, y2); out; end; if x2=a then begin r:=s(x1, y1, a+z2, y2); out; end; if x2=b then begin r:=s(x1, y1, b+z2, y2); out; end; if y2=0 then begin r:=s(x1, y1, x2, -z2); out; end; if (y2=b) and (x2<>0) then begin r:=s(x1, y1, x2, b+z2); out; end; if y2=a then begin r:=s(x1, y1, x2, a+z2); out; end; end.
include<bits/stdc++.h>
using namespace std; int main(){ long long a,b,c,x1,y1,x2,y2,z2; double S,x,y; cin>>a>>b>>c>>x1>>y1>>x2>>y2>>z2; x=pow((x2-x1),2); y=pow((y2-y1),2); S=sqrt(x+y)+abs(z2); cout<<setprecision(2)<<fixed<<S; }//what is reason for gives 40%?
var a, b, c, x1, y1, x2, y2, z2:longint; r, r1, r2, r3, r4, min:real; function s(xa, ya, xb, yb:longint):real; begin s:=sqrt(sqr(xa-xb)+sqr(ya-yb)); end; procedure out; begin writeln (r:0:2); halt; end; begin readln (a, b, c); readln (x1, y1, x2, y2, z2); if z2=0 then begin r:=s(x1, y1, x2, y2); out; end; if x2=0 then begin if y2=b then if x1+y1<b then begin r:=s(x1, y1, -z2, y2); out; end; r:=s(x1, y1, -z2, y2); out; end; if x2=a then begin r:=s(x1, y1, a+z2, y2); out; end; if x2=b then begin r:=s(x1, y1, b+z2, y2); out; end; if y2=0 then begin r:=s(x1, y1, x2, -z2); out; end; if (y2=b) and (x2<>0) then begin r:=s(x1, y1, x2, b+z2); out; end; if y2=a then begin r:=s(x1, y1, x2, a+z2); out; end; end.