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

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

Why WA#25???? My alg is correct 100%!!!
Послано Akshin Salimov 16 апр 2005 13:48
Oh no WA#25! Please help me!

var
  a1,a2,a3,h,s,aa,bb:real;
  a:array[1..3,1..2] of integer;
  i,l:integer;


procedure readdata;
begin
  readln(a[1,1],a[1,2],a[2,1],a[2,2]);
  readln(a[3,1],a[3,2],l);
end;

procedure writedata;
begin
  if aa>=0 then
  writeln(aa:0:2) else writeln('0.00');
  if bb>=0 then
  writeln(bb:0:2) else writeln('0.00');
end;

function d(x1,y1,x2,y2:integer):real;
begin
  d:=sqrt(sqr(x1-x2)+sqr(y1-y2));
end;

procedure square;
var
  p:real;
begin
  a1:=d(a[1,1],a[1,2],a[2,1],a[2,2]);
  a2:=d(a[3,1],a[3,2],a[2,1],a[2,2]);
  a3:=d(a[1,1],a[1,2],a[3,1],a[3,2]);
  p:=(a1+a2+a3)/2;
  s:=sqrt(p*(p-a1)*(p-a2)*(p-a2));
end;

begin
  readdata;
  square;
  if (a[1,1]=a[2,1]) and (a[1,2]=a[2,2]) then
  begin
    aa:=d(a[1,1],a[1,2],a[3,1],a[3,2]);
    bb:=aa;
  end  else
  begin
  if (a1*a1+a2*a2<a3*a3) or (a2*a2+a3*a3<a1*a1) or (a1*a1+a3*a3<a2*a2) then
  begin
    aa:=d(a[1,1],a[1,2],a[3,1],a[3,2]);
    if d(a[2,1],a[2,2],a[3,1],a[3,2])<aa
    then aa:=d(a[2,1],a[2,2],a[3,1],a[3,2]);
  end  else
  begin
    h:=d(a[1,1],a[1,2],a[2,1],a[2,2]);
    aa:=s/(0.5*h);
  end;

  bb:=d(a[3,1],a[3,2],a[2,1],a[2,2]);
  if d(a[3,1],a[3,2],a[1,1],a[1,2])>bb then
  bb:=d(a[3,1],a[3,2],a[1,1],a[1,2]);
  end;
  aa:=aa-l;
  bb:=bb-l;
  writedata;
end.
Re: Why WA#25???? My alg is correct 100%!!!
Послано Korduban [Kiev] 16 апр 2005 19:04
Try this test:

---input
-5 0 5 0
1 0 1

---correct output
0.00
5.00
You are mistaken!
Послано Akshin Salimov 16 апр 2005 23:01
No, you are mistaken correct answer is
3.00
5.00

Here is explanation:

* is 0 point
A B C are points.

<-----A----*C---B----->
              ...

... = 3.00

I dont know how you got 0.00 , please
explain, maybe you are right.

Edited by author 16.04.2005 23:03
see+++++++++++++
Послано Виктор Крупко 16 апр 2005 23:21
Distance from A up to B = 0
And to get up to point A and B a cord it is necessary to extend on 5.00
Re: see+++++++++++++
Послано Akshin Salimov 17 апр 2005 01:59
Can we discuss this problem via e-mail?
akshinioi@yahoo.com
No subject
Послано Akshin Salimov 17 апр 2005 01:59


Edited by author 17.04.2005 02:15
You know Russian
Послано Виктор Крупко 17 апр 2005 02:03
Re: You know Russian
Послано Akshin Salimov 17 апр 2005 02:16
yes i know russian language.
Re: see+++++++++++++
Послано Akshin Salimov 17 апр 2005 02:58
" And to get up to point A and B a cord it is necessary to extend on 5.00 " - I agree with that.

But distance between A and B isnt 0, if -5+5=0 that doesnt mean that the distance equal to nil! OR explain in details how did you get this -->  "Distance from A up to B = 0 "
Re: Read problem carefully!
Послано Korduban [Kiev] 17 апр 2005 23:48
"... There is a bed of pineapples that he loves very much. The bed is a **line segment** with the ends A and B... "

Point C is situated on segment AB, so there are no grounds to stretch the roap - goat anyhow can eat some pine apples, even if rope has length 0. There are infinite amount of pine apples on segment! Mail me to dkorduban[at]ukr[dot]net if you still have questions.

Sorry for my English.
Need help
Послано Akshin Salimov 19 апр 2005 17:00
I'm sorry, I understood my mistake.
When I use linear equation for this case, i got WA#3!!!
I dont know why. Please help me, how to make my program to get AC?
Re: Need help
Послано Korduban [Kiev] 20 апр 2005 00:49
1) Read this nice article (in Russian):
http://g6prog.narod.ru/cgeom.rar

2) Completely rewrite your program. Try to create more general program, without dozens of special cases. That's general and very useful rule (imho) for geometrical problems. For example, there is only one special case in my program - when A = B.

Of course, I can send you my AC code, if you need.
Re: Why WA#25???? My alg is correct 100%!!!
Послано Dron-elektron 7 ноя 2013 20:49
Thx for this test! WA #4 fixed now :)

Послано Korduban [Kiev] 16 апр 2005 19:04
Try this test:

---input
-5 0 5 0
1 0 1

---correct output
0.00
5.00

Edited by author 07.11.2013 20:49
Re: Why WA#25???? My alg is correct 100%!!!
Послано adamant 22 янв 2014 15:05
Btw, some pretty test is:
5 0 5 0
1 0 1

Correct output is
3.00 3.00