Guest User

Untitled

a guest
Jan 16th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;
  4. int ans=-1;
  5. void two(int l,int r,int* c,int m,int n){
  6. bool enough=false;//這樣能做完
  7. int mid=(l+r)/2;//每個人不能超過的工作量(最多的工作量)
  8. int w=1;//現在準備抄第幾個古文
  9. for(int i=1;i<=m;i++){
  10. int cur_work=0;
  11. if(w>n){
  12. break;
  13. }
  14. while(cur_work+c[w]<=mid){
  15. cur_work+=c[w];
  16. w++;
  17. if(w>n){
  18. enough=true;
  19. break;
  20. }
  21. }
  22. }
  23. if(enough){
  24. ans=mid;
  25. if(l==r){
  26. return;
  27. }
  28. two(l,(l+r)/2,c,m,n);
  29. }
  30. else{
  31. if(l==r){
  32. return;
  33. }
  34. two((l+r)/2+1,r,c,m,n);
  35. }
  36. }
  37. int main() {
  38. int T,N,M;
  39. int array[T];
  40. for(int i=0;i<T;i++){
  41. int all=0;
  42. scanf("%d %d",&N,&M);
  43. int c[100001]={0};
  44. for(int j=1;j<=N;j++){
  45. scanf("%d",&c[j]);
  46. all+=c[j];
  47. }
  48. two(1,all,c,M,N);
  49. cout << ans << endl;
  50. ans=-1;
  51. }
  52. return 0;
  53. }
Add Comment
Please, Sign In to add comment