Поиск по этому блогу

среда, 24 апреля 2019 г.

Суслик и собака

На большом поле находятся суслик и собака. Собака хочет суслика съесть, а суслик хочет оказаться в безопасности, добежав до одной из норок, выкопанных в поле. Ни собака, ни суслик в математике не сильны, но, с другой стороны, они и не беспросветно глупы. Суслик выбирает определенную норку и бежит к ней по прямой с определенной скоростью. Собака, которая очень хорошо понимает язык телодвижений, угадывает, к какой норке бежит суслик, и устремляется к ней со скоростью вдвое большей скорости суслика. Если собака добегает до норки первой (раньше суслика), то она съедает суслика; иначе суслик спасается.
Требуется написать программу, которая поможет суслику выбрать норку, в которой он может спастись, если таковая существует.

Входные данные

Во входном файле INPUT.TXT записано в первой строке два числа – координаты суслика. Во второй строке записаны два числа – координаты собаки. В третьей строке записано число n – число норок на поле. В следующих n строках записаны координаты норок. Все координаты являются целыми числами, по модулю не превышающими 10000, и записываются через пробел. Количество норок не превышает 1000.

Выходные данные

В единственную строку выходного файла OUTPUT.TXT нужно вывести число – номер норки, если у суслика есть возможность в ней спастись. Если у суслика есть возможность спрятаться в нескольких норках, то выведите ту, которая первая шла во входных данных. Если суслик не может спастись, то выведите в выходной файл «NO» (без кавычек).
Примеры
INPUT.TXT
OUTPUT.TXT
1
10 10
20 20
1
15 15
NO
2
20 20
10 10
2
15 15
25 25
2



Решение


var n,i,a1,b1,c1,d1,e1,g1:integer;

      fl:boolean;w,w1:real;

      f,f1:text;

begin
   fl:=false;
   assign(f,'input.txt');
   reset(f);
   assign(f1,'output.txt');
   rewrite(f1);
   readln(f,a1,b1);
   readln(f,c1,d1);
   readln(f,n);
   i:=1;
   repeat
       readln(f,e1,g1);
       w:=sqrt(sqr(e1-a1)+sqr(g1-b1));
       w1:=sqrt(sqr(e1-c1)+sqr(g1-d1));
       if 2*w<=w1 then fl:=true;
       i:=i+1;
    until (i>n) or fl;
   if fl then write(f1,i-1) else write (f1,'NO');
   close(f);
   close(f1);
 end.

Комментариев нет:

Отправить комментарий