Description

Farmer John has built a new long barn, with N (2 <= N <= 100,000) stalls. The stalls are located along a straight line at positions x1,…,xN (0 <= xi <= 1,000,000,000).

His C (2 <= C <= N) cows don’t like this barn layout and become aggressive towards each other once put into a stall. To prevent the cows from hurting each other, FJ want to assign the cows to the stalls, such that the minimum distance between any two of them is as large as possible. What is the largest minimum distance?

Input

  • Line 1: Two space-separated integers: N and C

  • Lines 2..N+1: Line i+1 contains an integer stall location, xi

Output

  • Line 1: One integer: the largest minimum distance

Sample Input

5 3

1

2

8

4

9

Sample Output

3

Hint

OUTPUT DETAILS:

FJ can put his 3 cows in the stalls at positions 1, 4 and 8, resulting in a minimum distance of 3.

Huge input data,scanf is recommended.

题目大意

有N间小屋,第i个小屋在xi的位置。

要让人尽可能远离其它人,问最大能安排多大的距离

解题思路

二分查找可行解

记住二分的模板,就以这题的二分为标准

代码

//POJ2456
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 100010;
int s[maxn];
int n,m;
bool ok(int x)
{
int cnt = 1;
int tmp = s[0];
for(int i = 1 ; i < n ; i ++) {
if(s[i]-tmp >= x) {
cnt ++;
tmp = s[i];
}
}
return cnt >= m;
}
int main()
{
scanf("%d%d",&n,&m);
for(int i = 0 ; i < n ; i ++) scanf("%d",&s[i]);
sort(s,s+n);
int ma = s[n-1]-s[0],mi = 0;
while(ma > mi) {
int mid = mi + (ma-mi+1)/2;
if(ok(mid)) mi = mid;
else ma = mid-1;
}
printf("%d\n",mi);
return 0;
}

最新文章

  1. 嵌入式Linux驱动学习之路(十四)按键驱动-同步、互斥、阻塞
  2. 富文本编辑器TInyMCE,本地图片上传(Image Upload)
  3. yourphp数据库介绍
  4. Mac Pro 安装 最新版的 SVN 1.9.4
  5. UVALive 7077 - Little Zu Chongzhi&#39;s Triangles(暴力)
  6. Firefox 备份
  7. java窗口按钮位置设置
  8. 一步一步学习Vue(十一)
  9. cobbler部署安装CentOS6.8
  10. clisp, scheme 和 clojure 初学习
  11. Django之跨域请求
  12. 大叔学ML第四:线性回归正则化
  13. android java.lang.NoClassDefFoundError: cn.yw.lib.viewpagerfragment.ViewPagerFragmentActivity
  14. 1.selenium实战之从txt文档读取配置信息并执行登录
  15. Android的Intent你知道多少?
  16. Error: Program type already present: android.arch.lifecycle.LifecycleRegistry$1
  17. 结队第二次作业——WordCount进阶需求
  18. python安装报错:Microsoft Visual C++ 14.0 is required
  19. Apache Commons Lang的StringUtils.isEmpty(STR)和StringUtils.isBlank(STR)
  20. 在NOILINUX下的简易VIM配置

热门文章

  1. js篇之对象数据属性与存取器属性
  2. django----过滤器和自定义标签
  3. cf343c 二分答案+模拟
  4. bzoj 1064 noi2008 假面舞会题解
  5. 检测cpu、主板、内存
  6. springbank 开发日志 springbank是如何注册handler的
  7. [转] $.ajax中contentType: “application/json” 的用法
  8. Here We Go(relians) Again HDU2722
  9. [转]使用python来操作redis用法详解
  10. 《gradle权威指南》--Gradle入门