poj 3258

参数搜索。

代码:

#include<iostream>
#include<fstream>

using namespace std;

long long n,m,l,mid;

long long a[50001];

int cmp(const void *a,const void *b){
	return *(long long*)a-*(long long *)b;
}


int solve(){
	int i,j=0,k=0;
	for(i=1;i<=n;i++)
	{
		if(a[i]-a[k]<mid)
		{
			j++;
		}
		else
		{
			k=i;
		}
	}
	if(l-a[k]<mid) j++;
	return j;
		
}

void read(){
//	ifstream cin("in.txt");
	long long i,j,k;
	cin>>l>>n>>m;
	for(i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	qsort(a+1,n,sizeof(long long),cmp);


	i=0;j=l;
	while(i<=j){
		mid=(i+j)>>1;
		if(solve()<=m) i=mid+1;
		else j=mid-1;
	}
	cout<<j<<endl;

}

int main(){
	read();
	return 0;
}

posted on 2011-04-06 18:37  宇宙吾心  阅读(233)  评论(0)    收藏  举报

导航