program t;
var n, i, a, b, c, d, k, m: integer; x1, x2, x3, y1, y2, y3: array[1..10000] of integer; f1, f2: text;
function icl(x, y: integer): boolean;
var i: integer;
begin
icl:=false;
for i:=1 to n do
if (x>=x1[i]) and (y>=y1[i]) and (x<=x2[i]) and (y<=y2[i]) then
icl:=true;
break
end
end;
procedure re(st, fn: integer);
var nst, nfn, i, j, jj, xx, yy: integer; eq, ff: boolean;
m:=m+1;
nst:=k+1;
ff:=false;
for i:=st to fn do
for j:=0 to 11 do
if j mod 3=0 then continue;
xx:=x3[i]+trunc(cos(j*pi/6)*3);
yy:=y3[i]+trunc(sin(j*pi/6)*3);
if not icl(xx, yy) then continue;
eq:=false;
for jj:=1 to k do if (xx=x3[jj]) and (yy=y3[jj]) then
eq:=true;
if eq then continue;
if (xx=c) and (yy=d) then
ff:=true;
k:=k+1;
x3[k]:=xx;
y3[k]:=yy;
if ff then break;
if ff then exit;
nfn:=k;
if nst>nfn then
m:=-1;
exit
re(nst, nfn)
assign(f1, 'horse.in');
reset(f1);
assign(f2, 'horse.out');
rewrite(f2);
readln(f1, n);
for i:=1 to n do readln(f1, x1[i], y1[i], x2[i], y2[i]);
readln(f1, a, b);
readln(f1, c, d);
k:=1;
x3[1]:=a;
y3[1]:=b;
m:=0;
re(1, 1);
writeln(f2, m);
close(f1);
close(f2)
end.
Program YouName;
Uses crt; // Использование модуля crt.
Const e = 2.71828; // Объявление константы e.
Var // Раздел для описания переменных.
m,n: Integer; // Объявляем целочисленные переменные.
x,u,y: Single; // Объявляем дробные переменные.
Label check1, check2; // Объявляем метки для оператора Goto.
Begin // Начало "тела" программы.
check1: // Метка для без условного перехода с оператора Goto.
write('Введите m: '); // Вывод текстового сообщения на экран консоли.
// {$I-} - это деректива, которая перехватывает вывод ошибок.
// т.e., если во время выполнение программы между {$I-} и {$I+} не будет ошибок,
// то значение IOResult будет равно 0. Если во время выполения программы произойдет ошибка,
// то программа не остановится, а задаст значение IOResult неравное 0.
// {$I+} соответственно отключает дерективу.
{$I-} // Включение директивы.
readln(m); // Ввод значения переменной m.
{$I+} // Отключение директивы
If IOResult <> 0 then // Если IOResult не равно 0 (т.е есть ошибки во время включенной директивы $I), то..
Begin // Начало подпрограммы.
writeln('Вы ввели неизвестный символ.'); // Вывод текстового сообщения на экран консоли.
writeln('Введите число'); // Вывод текстового сообщения на экран консоли.
Goto check1; // Переход на метку check1
End; // Конец подпрограммы.
check2: // Метка для без условного перехода с оператора Goto.
write('Введите n: '); // Вывод текстового сообщения на экран консоли.
readln(n); // Ввод значения переменной n.
{$I+} // Отключение директивы.
Goto check2; // Переход на метку check2
x:=(m*n-exp(ln(e)*((-m)*0.7)))/(2.67); // Вычисление x
y:=ln(2)*(m+1); // Вычисление y
u:=0.125*sqrt(x/y)+exp(ln(e)*cos(x-y)); // Вычисление u
writeln(u:0:4); // Вывод текстового сообщения на экран консоли.
// u:0:4 - это задает переменной u четыре знака после запятой.
End. // Конец "тела" программы.
program t;
var n, i, a, b, c, d, k, m: integer; x1, x2, x3, y1, y2, y3: array[1..10000] of integer; f1, f2: text;
function icl(x, y: integer): boolean;
var i: integer;
begin
icl:=false;
for i:=1 to n do
begin
if (x>=x1[i]) and (y>=y1[i]) and (x<=x2[i]) and (y<=y2[i]) then
begin
icl:=true;
break
end
end
end;
procedure re(st, fn: integer);
var nst, nfn, i, j, jj, xx, yy: integer; eq, ff: boolean;
begin
m:=m+1;
nst:=k+1;
ff:=false;
for i:=st to fn do
begin
for j:=0 to 11 do
begin
if j mod 3=0 then continue;
xx:=x3[i]+trunc(cos(j*pi/6)*3);
yy:=y3[i]+trunc(sin(j*pi/6)*3);
if not icl(xx, yy) then continue;
eq:=false;
for jj:=1 to k do if (xx=x3[jj]) and (yy=y3[jj]) then
begin
eq:=true;
break
end;
if eq then continue;
if (xx=c) and (yy=d) then
begin
ff:=true;
break
end;
k:=k+1;
x3[k]:=xx;
y3[k]:=yy;
end;
if ff then break;
end;
if ff then exit;
nfn:=k;
if nst>nfn then
begin
m:=-1;
exit
end;
re(nst, nfn)
end;
begin
assign(f1, 'horse.in');
reset(f1);
assign(f2, 'horse.out');
rewrite(f2);
readln(f1, n);
for i:=1 to n do readln(f1, x1[i], y1[i], x2[i], y2[i]);
readln(f1, a, b);
readln(f1, c, d);
k:=1;
x3[1]:=a;
y3[1]:=b;
m:=0;
re(1, 1);
writeln(f2, m);
close(f1);
close(f2)
end.
Program YouName;
Uses crt; // Использование модуля crt.
Const e = 2.71828; // Объявление константы e.
Var // Раздел для описания переменных.
m,n: Integer; // Объявляем целочисленные переменные.
x,u,y: Single; // Объявляем дробные переменные.
Label check1, check2; // Объявляем метки для оператора Goto.
Begin // Начало "тела" программы.
check1: // Метка для без условного перехода с оператора Goto.
write('Введите m: '); // Вывод текстового сообщения на экран консоли.
// {$I-} - это деректива, которая перехватывает вывод ошибок.
// т.e., если во время выполнение программы между {$I-} и {$I+} не будет ошибок,
// то значение IOResult будет равно 0. Если во время выполения программы произойдет ошибка,
// то программа не остановится, а задаст значение IOResult неравное 0.
// {$I+} соответственно отключает дерективу.
{$I-} // Включение директивы.
readln(m); // Ввод значения переменной m.
{$I+} // Отключение директивы
If IOResult <> 0 then // Если IOResult не равно 0 (т.е есть ошибки во время включенной директивы $I), то..
Begin // Начало подпрограммы.
writeln('Вы ввели неизвестный символ.'); // Вывод текстового сообщения на экран консоли.
writeln('Введите число'); // Вывод текстового сообщения на экран консоли.
Goto check1; // Переход на метку check1
End; // Конец подпрограммы.
check2: // Метка для без условного перехода с оператора Goto.
write('Введите n: '); // Вывод текстового сообщения на экран консоли.
{$I-} // Включение директивы.
readln(n); // Ввод значения переменной n.
{$I+} // Отключение директивы.
If IOResult <> 0 then // Если IOResult не равно 0 (т.е есть ошибки во время включенной директивы $I), то..
Begin // Начало подпрограммы.
writeln('Вы ввели неизвестный символ.'); // Вывод текстового сообщения на экран консоли.
writeln('Введите число'); // Вывод текстового сообщения на экран консоли.
Goto check2; // Переход на метку check2
End; // Конец подпрограммы.
x:=(m*n-exp(ln(e)*((-m)*0.7)))/(2.67); // Вычисление x
y:=ln(2)*(m+1); // Вычисление y
u:=0.125*sqrt(x/y)+exp(ln(e)*cos(x-y)); // Вычисление u
writeln(u:0:4); // Вывод текстового сообщения на экран консоли.
// u:0:4 - это задает переменной u четыре знака после запятой.
End. // Конец "тела" программы.