Thông tin
program baitrongcay; type mang=record gt:longint; kt:boolean; end; var n,k,i,j,min,max,t,tam,vt,nd,nc,kq,u,v:longint; a:array[0..1000000] of longint; b:array[1..1000000] of mang; procedure sort(l,r: longint); var i,j,x,y: longint; begin i:=l; j:=r; x:=a[(l+r) div 2]; repeat while a[i]<x do inc(i); while x<a[j] do dec(j); if not(i>j) then begin y:=a[i]; a[i]:=a[j]; a[j]:=y; inc(i); j:=j-1; end; until i>j; if l<j then sort(l,j); if i<r then sort(i,r); end; begin readln(n,k); for i:=1 to n do read(a[i]); sort(1,n); j:=0; for i:=1 to n do if a[k]<>a[i] then begin inc(j); b[j].gt:=a[i]; b[j].kt:=true; end; t:=j; tam:=a[k]; vt:=0; for i:=k-1 downto 1 do begin min:=high(longint); for j:=1 to t do if (min>abs(tam-b[j].gt)) and (b[j].kt) then begin min:=abs(tam-b[j].gt); b[j].kt:=false; vt:=j; end; if min<>high(longint) then begin kq:=kq+min; tam:=b[vt].gt; end; for j:=1 to vt-1 do b[j].kt:=true; end; tam:=a[k]; for i:=k+1 to n do begin min:=high(longint); for j:=1 to t do if (b[j].kt) and (min>abs(tam-b[j].gt)) then begin min:=abs(tam-b[j].gt); b[j].kt:=false; vt:=j; end; if min<>high(longint) then begin kq:=kq+min; tam:=b[vt].gt; end; for u:=vt+1 to t do b[u].kt:=true; end; writeln(kq); end.