比赛 20101119 评测结果 AAAAAAAAAA
题目名称 象棋比赛 最终得分 100
用户昵称 belong.zmx 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2010-11-19 08:47:19
显示代码纯文本
program chess(input,output);
var
 n,k:longint;
 a:array[1..100000]of longint;
 f:array[1..100000]of longint;
 i,j,ans:longint;

procedure sort1(x,y:longint);
var
 i,j,k,p:longint;
begin
 i:=x;
 j:=y;
 k:=a[(x+y) div 2];
 repeat
  while a[i]>k do inc(i);
  while a[j]<k do dec(j);
  if not(i>j) then
  begin
   p:=a[i];
   a[i]:=a[j];
   a[j]:=p;
   inc(i);
   dec(j);
  end;
 until i>j;
 if i<y then sort1(i,y);
 if j>x then sort1(x,j);
end;

procedure sort2(x,y:longint);
var
 i,j,k,p:longint;
begin
 i:=x;
 j:=y;
 k:=f[(x+y) div 2];
 repeat
  while f[i]<k do inc(i);
  while f[j]>k do dec(j);
  if not(i>j) then
  begin
   p:=f[i];
   f[i]:=f[j];
   f[j]:=p;
   inc(i);
   dec(j);
  end;
 until i>j;
 if i<y then sort2(i,y);
 if j>x then sort2(x,j);
end;

begin
 assign(input,'chess.in');
 reset(input);
 readln(n,k);
 for i:=1 to n do readln(a[i]);
 close(input);

 sort1(1,n);

 for i:=1 to n-1 do
  f[i]:=a[i]-a[i+1];

 sort2(1,n-1);

 for i:=1 to k do
  ans:=ans+f[i];

 assign(output,'chess.out');
 rewrite(output);
 writeln(ans);
 close(output);
end.