对于20%的数据,0≤M≤N≤10。 对于50%的数据,0≤M≤N≤100。
对于50%的数据,0≤M≤N≤100。
对于100%的数据,0≤M≤N≤50,000,1≤L≤1,000,000,000。
1 #include<cstdio>
2 #include<iostream>
3
4 #define N 5000000+10
5
6 using namespace std;
7
8 int a[N];
9 int s,n,m;
10
11 bool found(int k)
12 {
13 int ans=0,last=0;
14 for(int i=1;i<=n;i++)
15 {
16 if(a[i]-last<k) ans++;
17 else last=a[i];
18 }
19 if(ans>m) return 0;
20 else return 1;
21 }
22
23 int main()
24 {
25 scanf("%d%d%d",&s,&n,&m);
26 for(int i=1;i<=n;i++)
27 scanf("%d",&a[i]);
28 a[n+1]=s;
29 n++;
30 int l=0,r=s;
31 while(l<=r)
32 {
33 int mid=(l+r)/2;
34 if(found(mid)) l=mid+1;
35 else r=mid-1;
36 }
37 printf("%d",l-1);
38 return 0;
39 }