题目描述

有N个人要参加国际象棋比赛,该比赛要进行K场对弈。每个人最多参加两场对弈,最少参加零场对弈。每个人都有一个与其他人不相同的等级(用一个正整数来表示)。

在对弈中,等级高的人必须用黑色的棋子,等级低的人必须用白色的棋子。每个人最多只能用一次黑色的棋子和一次白色的棋子。为增加比赛的可观度,观众希望K场对弈中双方的等级差的总和最小。

比如有7个选手,他们的等级分别是30,17,26,41,19,38,18,要进行3场比赛。最好的安排是选手2对选手7,选手7对选手5,选手6对选手4。此时等级差的总和等于(18-17)+(19-18)+(41-38)=5达到最小。

输入输出格式

输入格式:

第一行两个正整数N,K

接下来有N行,第i行表示第i+1个人等级。

[数据规模]

在90%的数据中,1≤N≤3000;

在100%的数据中,1≤N≤100000;

保证所有输入数据中等级的值小于100000000,1≤K≤N-1。

输出格式:

在第一行输出最小的等级差的总和。

输入输出样例

输入样例#1: 复制

7 3
30
17
26
41
19
38
18
输出样例#1: 复制

5
思路:贪心
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,ans;
int num[];
struct nond{
int l,r,dis;
}v[];
bool cmp(nond a,nond b){
return a.dis<b.dis;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&num[i]);
sort(num+,num++n);
for(int i=;i<n;i++){
v[i].l=num[i];
v[i].r=num[i+];
v[i].dis=num[i+]-num[i];
}
sort(v+,v++n-,cmp);
for(int i=;i<=m;i++)
ans+=v[i].dis;
cout<<ans;
}
 

最新文章

  1. grub2添加win引导(未试用)
  2. 【JAVA】JDK -Calendar 遇到的 一个坑
  3. 说说设计模式~策略模式(Strategy)
  4. DIV JS CSS 轻量级弹出层 兼容各浏览器
  5. 苹果开发——App内购以及验证store的收据(二)
  6. 01-03-02-1【Nhibernate (版本3.3.1.4000) 出入江湖】CRUP操作--cascade 级联相关
  7. php5.3不支持 ereg、ereg_replace等函数问题,如提示:Deprecated: Function ereg() is deprecated
  8. spoj 4487. Can you answer these queries VI (gss6) splay 常数优化
  9. &lt;Pro .NET MVC4&gt; 三大工具之依赖注入神器——Ninject
  10. 尺度空间(Scale space)理论
  11. Struts2系列笔记(4)---Ation类访问servlet
  12. linux0.11学习笔记(1)
  13. vmstat 命令详解
  14. 分享一个开源的网盘下载工具BaiduPCS-Go
  15. spring aop学习记录
  16. 设计模式综合列表【QQ空间日志转载】
  17. Dom对象和jQuery对象的相互转化
  18. Centos7安装Nginx实战
  19. js数组转成对象
  20. Hadoop学习资料整理

热门文章

  1. STL使用————SET&amp;MULTISET
  2. JS控制光标定位,定位到文本的某个位置
  3. 123.static静态函数与类模板
  4. HDU 4349 Xiao Ming&#39;s Hope 组合数学
  5. 在Windows下如何创建虚拟环境(默认情况下)
  6. 关于springmvc重定向后Cannot create a session after the response has been committed问题
  7. tee---将数据重定向到文件,
  8. 【例题 7-11 UVA - 12325】Zombie&#39;s Treasure Chest
  9. Android 第三方分享中遇到的问题以及解决方案
  10. 怎样借助log4j把日志写入数据库中