d,f:array[0..50,0..50,1..9] of longint;
g:array[0..50,0..50] of longint;
t:array[0..50] of longint;
n,m,i,min,max:longint;
procedure prepare;
var i,j:longint;
begin
for i:=0 to n-1 do begin
g[i,1]:=t[i];
for j:=2 to n do begin
g[i,j]:=(g[i,j-1]+t[(i+j-1) mod n]) mod 10;
end;
end;
end;
procedure main;
var
i,j,k,min,max,l,tem:longint;
begin
for i:=0 to n-1 do
for j:=1 to n do begin
d[i,j,1]:=g[i,j]; f[i,j,1]:=g[i,j];
for k:=2 to m do begin
min:=maxlongint; max:=0;
for l:=1 to j-1 do begin
tem:=d[i,l,k-1]*g[(i+l) mod n,j-l];
if tem<min then min:=tem;
if tem>max then max:=tem;
end;
d[i,j,k]:=min;
f[i,j,k]:=max;
end;
end;
end;
begin
readln(n,m);
fillchar(g,sizeof(g),0);
fillchar(t,sizeof(t),0);
fillchar(d,sizeof(d),0);
fillchar(f,sizeof(f),0);
for i:=0 to n-1 do
begin
readln(t[i]);
t[i]:=(t[i]+10) mod 10;
end;
prepare;
main;
min:=maxlongint;
for i:=0 to n-1 do
if d[i,n,m]<min then min:=d[i,n,m];
max:=0;
for i:=0 to n-1 do
if f[i,n,m]>max then max:=f[i,n,m];
writeln(min);
writeln(max);
end.
.。。。。。。。。。。
d[a,b,c] 表示从第a个开始的b个数划分成c段的最小值
f..............................................................最大值
g[i,j]为从第i个数加j个的和