写的2分。第五行我只输出了一行。。
program p1231;
var
top,temp,ans,k,m,j,i,mid,maxn,l,r:longint;
a,f:array[0..501]of longint;
function can(mid:longint):boolean;
var
i,tot,temp:longint;
begin
tot:=k;
temp:=0;
for i:=m downto 1 do
begin
if temp+a[i]>mid then
begin
dec(tot);
if tot<=0 then exit(false);
temp:=0;
end;
inc(temp,a[i]);
end;
exit(true);
end;
procedure main;
begin
readln(m,k);
maxn:=0;
for i:=1 to m do
begin
read(a[i]);
if a[i]>maxn then maxn:=a[i];
end;
l:=maxn; r:=maxlongint-maxn-1;
repeat
mid:=(l+r) div 2;
if can(mid) then
begin
r:=mid-1;
ans:=mid;
end
else l:=mid+1;
until l>r;
temp:=0;
top:=0;
for i:=m downto 1 do
begin
if temp+a[i]>ans then
begin
inc(top);
f[top]:=i+1;
temp:=0;
end;
inc(temp,a[i]);
end;
inc(top);
f[top]:=1;
f[0]:=m+1;
f[top]:=1;
for i:=top downto 1 do writeln(f[i],' ',f[i-1]-1);
end;
begin
main;
end.