ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1348. Пусти козла в огород 2

Why WA on test 5 ? help me!!!
Послано Artem Ladik 3 авг 2008 16:36
type
 Ta=record
 x,y:extended;
end;

var a,b,c:Ta;
    ab,ac,bc,p,s,h,m:extended;
    l:extended;

    function max(a,b:extended):extended;
    begin
     if a-b>0 then max:=a else max:=b;
    end;

begin
 readln(a.x,a.y,b.x,b.y);
 readln(c.x,c.y,l);

 ac:=sqrt(sqr(a.x-c.x)+sqr(a.y-c.y));
 ab:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
 bc:=sqrt(sqr(b.x-c.x)+sqr(b.y-c.y));
 p:=(ab+ac+bc)/2;
 s:=sqrt(p*(p-ac)*(p-ab)*(p-bc));

 if ab=0 then h:=ac else h:=2*s/ab;

 if h-l>0 then          writeln(h-l:0:2)          else writeln('0.00');

m:=max(ac,bc);
 if m-l>0 then writeln(m-l:0:2) else writeln('0.00');
end.

Edited by author 03.08.2008 16:37
Re: Why WA on test 5 ? help me!!!
Послано ErOPb|4[USU] 10 авг 2008 10:18
Try this test:
-1 1 1 1 -4 -3 0
Correct answere is 5.00 6.40
Re: Why WA on test 5 ? help me!!!
Послано Angantyr 23 ноя 2010 23:28
I have:
var ab,ca,cb,p,s1,s2,Streyg,cosA,cosB:real;
    Xa,Ya,Xb,Yb,Xc,Yc,L:integer;
 Begin
  Readln(Xa,Ya,Xb,Yb,Xc,Yc,L);
  ab:=sqrt(sqr(Xa-Xb)+sqr(Ya-Yb));
  ca:=sqrt(sqr(Xa-Xc)+sqr(Ya-Yc));
  cb:=sqrt(sqr(Xb-Xc)+sqr(Yb-Yc));
  p:=(ab+ca+cb)/2;
  Streyg:=(sqrt(p*(p-ab)*(p-ca)*(p-cb)));

  if ((ca>cb) and (L>=ca)) or ((ca<cb) and (L>=cb)) or ((Xa=Xb) and (Ya=Yb) and (L>=ca)) then begin s1:=0; s2:=s1; end
  else
   if (Xa=Xb) and (Ya=Yb) then begin s1:=ca; s2:=s1; end
      else
        begin
         if (Streyg=0) or (L>=ca) or (L>=cb) or (L>=2*Streyg/ab) then s1:=0
         else
          begin
           cosA:=(ca*ca+ab*ab-cb*cb)/(2*ca*ab);
           cosB:=(ab*ab+cb*cb-ca*ca)/(2*ab*cb);
           if (cosA>=0) and (cosB>=0) then s1:=2*Streyg/ab-L
           else
            if ca>cb then s1:=cb-L
            else s1:=ca-L;
          end;
         if ca>cb then s2:=ca-L
         else s2:=cb-L;
        end;

  writeln(s1:3:2);
  write(s2:3:2);

 End.

give me some test
Re: Why WA on test 5 ? help me!!!
Послано SuperLight 23 ноя 2010 23:45
Re: Why WA on test 5 ? help me!!!
Послано Guzh 18 окт 2013 03:23
Why 5. Why not 4?
Re: Why WA on test 5 ? help me!!!
Послано sergovoy 10 янв 2017 22:54
Основание перпендикуляра не попадёт в отрезок.
А по теореме Пифагора получаем для катетов 3 и 4 гипотенузу 5