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;
}
浙公网安备 33010602011771号