program fastfood(input,output); type prvek=record c:integer; d:integer; klic:integer; end; var f:text; n,k,i,last,next:integer; a,b:array[1..300] of prvek ; depot:array[1..40] of integer; procedure quicksort(n:integer); procedure trideni(l,r:integer); var i,j:integer; w:prvek; x:integer; begin i:=l; j:=r; x:= a[(l+r) div 2].klic; repeat while a[i].klic < X do i:=i+1; while xj; if laa then for i:=aa to bb-1 do sum:=sum+b[i].d; if aa>bb then for i:=bb to aa-1 do sum:=sum+b[i].d; dist:=sum; end; var cs:integer; left,right:integer; j:integer; sum:integer; begin cs:=1; reset(f,'fastfood.in'); readln(f,n,k) ; while n>0 do begin writeln('Chain ',cs:1); cs:=cs+1; readln(f,last); if n=1 then writeln('Depot 1 at restaurant 1 serves restaurant 1') else begin for i:=1 to n-1 do begin readln(f,next); a[i].c:=i; a[i].d:=next-last; last:=next; end; b:=a; sum:=0; for i:=1 to 300 do a[i].klic:=-a[i].d; quicksort(n-1); for i:=1 to 300 do a[i].klic:=a[i].c; quicksort(k-1); left:=1; for i:=1 to k do begin right:=a[i].c; if i=k then right:=n; depot[i]:=(left+right) div 2; for j:=left to right do sum:=sum+dist(j,depot[i]); if left=right then writeln('Depot ',i:1, ' at restaurant ',depot[i]:1,' serves restaurant ',depot[i]:1) else writeln('Depot ',i:1, ' at restaurant ',depot[i]:1, ' serves restaurants ',left:1,' to ',right:1); left:=right+1; end; writeln('Total distance sum = ',sum:1); writeln; end; readln(f,n,k); end; end.