写的是二分,但是只有80分,现在也没改出来
这题是不能用二分,还是就是我的程序写挂了啊qwq
#include<bits/stdc++.h>
using namespace std;
int m,s,c,l,r,mid,ans=2147483647,a[205];
bool check(int maxx)
{
int now=0,cnt=0,sum=0;
now=1; cnt++;
for(int i=2;i<=c;i++)
if((maxx-now)<(a[i]-a[i-1]))
{
cnt++; sum+=now; now=1;
}
else now+=(a[i]-a[i-1]);
sum+=now;
if(cnt<=m)
{
ans=min(ans,sum);
return 1;
}
return 0;
}
int main()
{
scanf("%d%d%d",&m,&s,&c);
for(int i=1;i<=c;i++) scanf("%d",&a[i]);
sort(a+1,a+1+c);
l=1; r=s;
while(l<=r)
{
mid=(l+r)>>1;
if(check(mid)) r=mid-1;
else l=mid+1;
}
printf("%d\n",ans);
return 0;
}