bzoj1734
二分
#include<cstdio> #include<cctype> #include<algorithm> #include<set> using namespace std; set<int>s;int c; set<int>::iterator it; inline int read(){ char ch=getchar();int x=0,f=1; while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();} while(isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();} return x*f; } inline bool check(int x){ int las=0,tot=0; while(tot<c && (it=s.lower_bound(las))!=s.end()){ tot++;las=*it+x; } return tot>=c; } int main(){ int n=read();c=read(); for(int i=1;i<=n;i++)s.insert(read()); if(s.size()<c)return printf("0"),0; int l=1,r=1e9,ans=0; while(l<=r){ int mid=(l+r)>>1; if(check(mid))ans=max(ans,mid),l=mid+1;else r=mid-1; } printf("%d",ans); return 0; }

浙公网安备 33010602011771号