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

Обсуждение задачи 1351. Хороший гнусмас – мёртвый гнусмас

const
  eps = 1e-9;
var
  a1, b1, a2, b2, x, y, x1, y1, d, x2, y2: real;
  i, n: longint;
Begin
  read(d, x1, y1, x2, y2);
  read(n);
  a1 := y1;
  b1 := -x1;
  a2 := y2;
  b2 := -x2;
  for i := 1 to n do begin
    read(x, y);
    if (abs(x1 - x2) < eps) and (abs(y1 - y2) < eps)
    then begin if (abs(a1 * x + b1 * y) < eps) and (x * x + y * y - eps <= d * d) and (abs(sqrt(x * x + y * y) + sqrt((x - x1) * (x - x1) + (y - y1) * (y - y1)) - sqrt(x1 * x1 + y1 * y1)) < eps)
      then writeln('YES')
      else writeln('NO')
    end
    else if (a1 * x + b1 * y - eps <= 0) and (a2 * x + b2 * y + eps >= 0) and (x * x + y * y - eps <= d * d)
      then writeln('YES')
      else writeln('NO');
  end;
End.

I solve this problem with type longint but it makes no difference...
TUSUR_lxn Re: WA#9 [2] // Задача 1351. Хороший гнусмас – мёртвый гнусмас 19 апр 2009 08:52
try this:
5 1 0 1 0
1
-1 0

corect is
NO


...and it is more useful to use Longint instead of real to solve this problem. To compare distances use sqr of distances
[SPB]Vladimir Kiselev Re: WA#9 // Задача 1351. Хороший гнусмас – мёртвый гнусмас 14 ноя 2012 21:27
This test helped me:

1007 20 25 4 5
1
-16 -20

Answer : NO


Edited by author 14.11.2012 21:28
This test helped me
5 0 1 0 1
1
0 1

correct answer: YES