1
0
Fork 0
cp/2ndary/09/TP-HN-2014/cau4.pas

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.