fork download
  1. #include <iostream>
  2. using namespace std;
  3. int tab [1000000];
  4.  
  5. bool czyok (int d, int n, int dni){
  6. int iledni=1;
  7. int suma=0;
  8. for(int i=0;i<n;i++){
  9. if (tab[i]>d)return false;
  10. else {
  11. if ((suma+tab[i])<=d){suma+=tab[i];}
  12. else {suma=0; suma+=tab[i]; iledni++;}
  13. }
  14. if (iledni>dni) return false;
  15. }
  16. return true;
  17. }
  18.  
  19. int main() {
  20. int n, k, maxx=0;
  21. cin>> n>>k;
  22. for (int i =0;i<n;i++){
  23. cin>>tab[i];
  24. maxx+=tab[i];
  25. }
  26. int kon, pocz, sr;
  27. kon = maxx;
  28. pocz = 0;
  29. while ((kon-pocz)>1){
  30. sr=(kon+pocz)/2;
  31. if (czyok(sr,n, k)==true){
  32. kon=sr;
  33. }else pocz=sr;
  34. }
  35. cout<<kon;
  36.  
  37.  
  38.  
  39. return 0;
  40. }
Success #stdin #stdout 0.01s 5472KB
stdin
6 4
7
2
6
4
5
stdout
8