Hrbust1006River Hopscotch


#include <algorithm>
#include <iostream>
#include<stdio.h>
using namespace std;
bool cmp(int a,int b)
{
      if (a<b) return true;
      return false;
}
int n,m,num[50010];
int main()
{
  int max,min,i,L,mid;
  while(scanf("%d%d%d",&L,&n,&m)!=EOF)
  {
    max=L;
 min=0;
 for(i=1;i<=n;i++)
 {
  scanf("%d",&num[i]);
 }
 num[0]=0;
 num[n+1]=L;
   sort(num,num+n+1,cmp);
 while(max>=min)
 {
       mid=(max+min)/2;
      int sum=0,tem=0;
  for(i=1;i<n+2;i++)
  {
  if(num[i]-num[tem]<mid) sum++;
  else tem=i;
  }
    if(sum>m) max=mid-1;
    else min=mid+1;
 }
   printf("%d\n",max);
  }
  return 0;
}

posted @ 2013-04-03 19:49  天天AC  阅读(129)  评论(0编辑  收藏  举报