#include<cstdio> #define N 110000 long long n,m,sum=0,ans,max=0; long long a[N]; void find(long long l,long long r) { if (l>r) return; long long mid=(l+r)/2,s=0,k=0; for (int i=1;i<=n;i++) { s+=a[i]; if (s>mid) k++,s=a[i]; } if (s) k++; if (k>m) find(mid+1,r); else ans=mid,find(l,mid-1); } int main() { scanf("%lld%lld",&n,&m); /* 这里又被坑了一下午 前面n,m定义的long long,读入的时候“%d”整成这玩意。 以后注意!以后注意!以后注意! */ for (int i=1;i<=n;i++) { scanf("%lld",&a[i]); if (a[i]>max) max=a[i]; sum+=a[i]; } find(max,sum); printf("%lld",ans); return 0; }
1766 装果子
I'm so lost but not afraid ,I've been broken and raise again