Cod sursa(job #3174531)

Utilizator GarlicBreadStefan Popescu GarlicBread Data 24 noiembrie 2023 21:06:20
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <iostream>
#include <fstream>
using namespace std;
int v[16001];
int main() 
{
  int n,k,i,max=0,sum=0,st,dr,mij,sol,S,j;
  cin>>n>>k;
  for(i=1;i<=n;i++)
    {
      cin>>v[i];
      sum+=v[i];
      if(v[i]>max) max=v[i];
    }
  st=max;
  dr=sum;
  while(st<=dr)
    {
      mij=(st+dr)/2;
      S=0;
      j=0;
      i=1;
      while(i<=n)
      {
        S+=v[i];
        if(S>k)
        {
          S=v[i];
          j++;
        }
        i++;
      
      }
      if(S<=k && S!=v[i]) 
      {
        j++;
      }
      if(j>k)
      {
        st=mij+1;
      }
      else
      {
        dr=mij-1;
        sol=j;
      }
    }
  cout<<sol;
}