
я собсна по какому вопросу. давеча писал олимпиаду районную, задания ниже. меня интересуют ваши соображения по поводу 3 и 4 задач. сразу скажу, что с 4й я не справился


program Prob4;
{$N+}
const
MaxN = 200;
var
n, ms, i, j: Integer;
x, y: array[0..MaxN] of Integer;
r: Single;
f: array[0..MaxN, 0..MaxN] of Boolean;
w: array[0..MaxN] of Boolean;
t: Boolean;
procedure Step(i, s: Integer);
var
j: Integer;
begin
w[i] := True;
Inc(s);
if s > ms then Exit;
if f[i, 0] and w[n] then ms := s;
for j := 1 to n do
if f[i, j] and not w[j] then Step(j, s);
w[i] := False;
end;
begin
Assign(Input, 'input.txt');
Reset(Input);
Read(n, r);
for i := 1 to n do
Read(x[i], y[i]);
Close(Input);
x[0] := 0;
y[0] := 0;
for i := 0 to n - 1 do
for j := i + 1 to n do
begin
t := Sqrt(Sqr(x[i] - x[j]) + Sqr(y[i] - y[j])) <= r;
f[i, j] := t;
f[j, i] := t;
end;
ms := MaxInt;
Step(0, 0);
if ms = MaxInt then
Writeln(-1)
else
Writeln(ms);
end.
program Prob3;
procedure CheckWord(const Word: String);
var
i, j, k: Integer;
f: Boolean;
begin
if Word <> '' then
for i := (Length(Word) + 1) shr 1 to Length(Word) do
for j := 1 to Length(Word) - i + 1 do
begin
f := True;
for k := 0 to i shr 1 - 1 do
if Word[j + k] <> Word[j + i - 1 - k] then
begin
f := False;
Break;
end;
if f then
begin
Writeln(Word);
Exit;
end;
end;
end;
var
c: Char;
w: String;
f: Boolean;
begin
Assign(Input, 'input.txt');
Reset(Input);
w := '';
f := True;
while not Eof do
begin
Read( c);
case c of
' ':
begin
CheckWord(w);
w := '';
f := True;
end;
'0'..'9':
if f then w := w + c;
else
begin
w := '';
f := False;
end;
end;
end;
CheckWord(w);
Close(Input);
end.