记录编号 472506 评测结果 AAAAAAAAAA
题目名称 [USACO Mar07] 月度花费 最终得分 100
用户昵称 Gravatar八级大狂风 是否通过 通过
代码语言 C++ 运行时间 0.027 s
提交时间 2017-11-07 18:50:10 内存使用 0.67 MiB
显示代码纯文本
  1. #include <cstdio>
  2. #include <algorithm>
  3. #define ll long long
  4. using namespace std;
  5.  
  6. int n,m;
  7. int a[100100];
  8.  
  9. bool check(ll x){
  10. ll ans=1;
  11. ll total=0;
  12. int i;
  13. for(i=1;i<=n;i++){
  14. if(total+a[i]<=x){
  15. total+=a[i];
  16. }else{
  17. if(a[i]>x)return 0;
  18. else{
  19. ans++;
  20. total=a[i];
  21. }
  22. }
  23. }
  24. if(ans<=m)return 1;
  25. return 0;
  26. }
  27. int main(){
  28. freopen("expense.in","r",stdin);
  29. freopen("expense.out","w",stdout);
  30. scanf("%d%d",&n,&m);
  31. ll i,l=1,r=0;
  32. for(i=1;i<=n;i++){
  33. scanf("%d",&a[i]);
  34. r+=a[i];
  35. }
  36. ll mid=(l+r)>>1;
  37. ll ans=-1;
  38. while(l<=r){
  39. mid=(l+r)>>1;
  40. if(check(mid)){
  41. r=mid-1;ans=mid;
  42. }else l=mid+1;
  43. }
  44. printf("%lld",ans);
  45. return 0;
  46. }