90 lines
1.3 KiB
Plaintext
90 lines
1.3 KiB
Plaintext
var
|
|
f: text;
|
|
n, k, i: smallint;
|
|
a, c: array of longint;
|
|
b: array of boolean;
|
|
d: longint = 0;
|
|
|
|
|
|
procedure foo(
|
|
idx: smallint;
|
|
delta: longint
|
|
);
|
|
|
|
var
|
|
i: smallint;
|
|
next: byte = 1;
|
|
|
|
begin
|
|
if (idx = k + 1) and (k > 0) then
|
|
delta := delta + abs(c[k] - c[k - 1]);
|
|
|
|
if delta >= d then
|
|
exit;
|
|
|
|
if idx + 1 = k then
|
|
inc(next);
|
|
|
|
if idx = n then
|
|
begin
|
|
d := delta;
|
|
exit
|
|
end;
|
|
|
|
for i := 0 to n - 2 do
|
|
if b[i] then
|
|
begin
|
|
b[i] := false;
|
|
c[idx] := a[i];
|
|
|
|
if idx > 0 then
|
|
foo(idx + next, delta + abs(c[idx] - c[idx - 1]))
|
|
else
|
|
foo(idx + next, 0);
|
|
|
|
b[i] := true;
|
|
c[idx] := 0
|
|
end
|
|
end;
|
|
|
|
|
|
begin
|
|
assign(f, 'CAU4.INP');
|
|
reset(f);
|
|
readln(f, n, k);
|
|
setlength(a, n);
|
|
for i := 0 to n - 1 do
|
|
read(f, a[i]);
|
|
close(f);
|
|
|
|
setlength(c, n);
|
|
dec(k);
|
|
c[k] := a[k];
|
|
|
|
for i := 0 to k - 1 do
|
|
c[i] := 0;
|
|
for i := k + 1 to n - 1 do
|
|
c[i] := 0;
|
|
|
|
for i := 1 to n - 1 do
|
|
d := d + abs(a[i] - a[i - 1]);
|
|
|
|
for i := k to n - 2 do
|
|
a[i] := a[i + 1];
|
|
setlength(a, n - 1);
|
|
|
|
setlength(b, n - 1);
|
|
for i := 0 to n - 2 do
|
|
b[i] := true;
|
|
|
|
if k = 0 then
|
|
foo(1, 0)
|
|
else
|
|
foo(0, 0);
|
|
|
|
assign(f, 'CAU4.OUT');
|
|
rewrite(f);
|
|
writeln(f, d);
|
|
close(f)
|
|
end.
|