tanasaradu

Untitled

Feb 15th, 2018
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. ifstream fin ("transport.in");
  4. ofstream fout ("transport.out");
  5. int a[16005] , n , k;
  6. /// returneaza 1 daca sirul se poate imparti
  7. ///in cel mult k secvente de suma L
  8. int Check(int val)
  9. {
  10. int nrsecv , s;
  11. nrsecv = 1;
  12. s = 0;
  13. for(int i = 1 ; i <= n ; i++)
  14. {
  15. if(a[i] > val)
  16. return 0;
  17. s += a[i];
  18. if(s > val)
  19. {
  20. nrsecv++;
  21. s = a[i];
  22. }
  23. }
  24. return (nrsecv <= k);
  25. }
  26. int main()
  27. {
  28. int stg = 1 , drp = 16005 * 16005 , mij , poz = 0;
  29. fin >> n >> k;
  30. for(int i = 1 ; i <= n ; i++)
  31. fin >> a[i];
  32. while(stg <= drp)
  33. {
  34. mij = (stg + drp) / 2;
  35. if(Check(mij))
  36. {
  37. poz = mij;
  38. drp = mij - 1;
  39. }
  40. else stg = mij + 1;
  41. }
  42. fout << poz << "\n";
  43. fin.close();
  44. fout.close();
  45. return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment