我听说这题加了Hack,就重新写了一遍:
#include<bits/stdc++.h>
using namespace std;
#define int long long
int A,B,N;
int c[500010];
int ans;
inline int read() {
register int x=0;
int f=1;
register char ch=getchar();
while(ch<'0'||ch>'9') {
if(ch='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9') {
x=(x<<3)+(x<<1)+(ch^48);
ch=getchar();
}
return f*x;
}
inline void write(int x) {
if(x<0) {
putchar('-');
x=-x;
}
if(x>9)write(x/10);
putchar(x%10+'0');
}
inline bool check(int m){
int sum=0,pre=0;
for(int i=0;i<=A;i++){
if(c[i]-pre>=m)pre=c[i];
else sum++;
}
return sum<=B?1:0;
}
signed main(){
N=read();
A=read();
B=read();
for(int i=0;i<A;i++){
c[i]=read();
}
c[A]=N;
int l=0,r=N,mid;
while(l<=r){
mid=(l+r)/2;
if(check(mid)){
ans=mid;
l=mid+1;
}else r=mid-1;
}
write(ans);
return 0;
}
结果Hack没对。
可我在本地测试是正确的2呀?
@chen_zhe
@小粉兔