73 lines
1.7 KiB
ObjectPascal
73 lines
1.7 KiB
ObjectPascal
var
|
|
a,atmp:array[0..50] of longint;
|
|
f:array[0..9,0..50] of longint;
|
|
n,m,i:longint;
|
|
function g(a,b:longint):longint;
|
|
var
|
|
i:longint;
|
|
begin
|
|
g:=0;
|
|
for i:=a to b do
|
|
if atmp[i]>0 then g:=g+atmp[i]
|
|
else g:=g+atmp[i];
|
|
g:=(g+100000) mod 10;
|
|
end;
|
|
procedure question_min;
|
|
var
|
|
t,i,j,k,tmp,min:longint;
|
|
begin
|
|
min:=maxlongint;
|
|
for t:=1 to n do
|
|
begin
|
|
for i:=1 to n do atmp[i]:=a[(i+t-1) mod n];
|
|
atmp[n-t+1]:=a[n];f[0,1]:=atmp[1];
|
|
for i:=1 to n do f[0,i]:=g(1,i);
|
|
for i:=1 to m-1 do
|
|
for j:=i+1 to n do
|
|
begin
|
|
f[i,j]:=maxlongint;
|
|
for k:=i to j-1 do
|
|
begin
|
|
tmp:=g(k+1,j);
|
|
if f[i,j]>tmp*f[i-1,k] then f[i,j]:=tmp*f[i-1,k];
|
|
end;
|
|
end;
|
|
if f[m-1,n]<min then min:=f[m-1,n];
|
|
end;
|
|
writeln(min);
|
|
end;
|
|
procedure question_max;
|
|
var
|
|
t,i,j,k,tmp,max:longint;
|
|
begin
|
|
max:=0;
|
|
for t:=1 to n do
|
|
begin
|
|
for i:=1 to n do atmp[i]:=a[(i+t-1) mod n];
|
|
atmp[n-t+1]:=a[n];f[0,1]:=atmp[1];
|
|
for i:=1 to n do f[0,i]:=g(1,i);
|
|
for i:=1 to m-1 do
|
|
for j:=i+1 to n do
|
|
begin
|
|
f[i,j]:=0;
|
|
for k:=i to j-1 do
|
|
begin
|
|
tmp:=g(k+1,j);
|
|
if f[i,j]<tmp*f[i-1,k] then f[i,j]:=tmp*f[i-1,k];
|
|
end;
|
|
end;
|
|
if f[m-1,n]>max then max:=f[m-1,n];
|
|
end;
|
|
writeln(max);
|
|
end;
|
|
begin
|
|
assign(input,'game.in');reset(input);
|
|
assign(output,'game.out');rewrite(output);
|
|
readln(n,m);
|
|
for i:=1 to n do readln(a[i]);
|
|
question_min;
|
|
question_max;
|
|
close(input);
|
|
close(output);
|
|
end.
|