| 记录编号 | 22462 | 评测结果 | AAAAAAAAAA | 
    
        | 题目名称 | 515.象棋比赛 | 最终得分 | 100 | 
    
        | 用户昵称 |  fanzeyi | 是否通过 | 通过 | 
    
        | 代码语言 | C | 运行时间 | 0.128 s | 
    
        | 提交时间 | 2010-11-19 14:20:22 | 内存使用 | 0.23 MiB | 
    
    
    
    		显示代码纯文本
		
		/*
 * ===========================================
 *
 * 	Task: Chess
 * 	User: fanzeyi
 * 	Lang: C
 *
 * ===========================================
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void quicksort(long *arrstart, long s, long t) //arrstart : 數組開始位置指針; s,t:排序的起始位置
{	if (s >= t) return;
	long i = s, j = t, x = arrstart[rand() % (t - s + 1) + s], tmp;
	while (i <= j)
	{ 
		while ((i < t)&&(arrstart[i] < x)) ++i;
		while ((j > s)&&(arrstart[j] > x)) --j;
		if (i <= j)
	 	{	tmp = arrstart[i];
			arrstart[i] = arrstart[j];
			arrstart[j] = tmp;
			++i; --j;}
	}
	quicksort(arrstart, s, j);
	quicksort(arrstart, i, t);
} 
//Orz CCF
//Spring Brother bless me.
int main()
{
	FILE *fin=fopen("chess.in","r");
	FILE *fout=fopen("chess.out","w");
	long n,k;
	fscanf(fin,"%ld %ld\n",&n,&k);
	long *level,*cha;
	level=(long*)malloc(sizeof(long)*n);
	cha=(long*)malloc(sizeof(long)*n);
	int i;
	for(i=0;i<n;i++)
		fscanf(fin,"%ld\n",&level[i]);
	quicksort(level,0,n-1);
	for(i=0;i<n-1;i++)
		cha[i]=abs(level[i+1]-level[i]);
	quicksort(cha,0,n-2);
	long total=0;
	for(i=0;i<k;i++)
		total+=cha[i];
	fprintf(fout,"%ld",total);
	return 0;
}