Cod sursa(job #3175013)

Utilizator GarlicBreadStefan Popescu GarlicBread Data 25 noiembrie 2023 11:30:18
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <iostream>
#include <fstream>
using namespace std;
int v[160001];
int main()
{
  ifstream cin("transport.in");
  ofstream cout("transport.out");
  int n,k,i,max=0,sum=0,st=-1,dr=0,mij,sol,S,j;
  cin>>n>>k;
  for(i=1;i<=n;i++)
    {
      cin>>v[i];
      dr+=v[i];
      if(v[i]>st) st=v[i];
    }
  sol=-1;
  while(st<=dr)
    {
      mij=(st+dr)/2;
      S=0;
      j=0;
      for(i=1;i<=n;i++)
      {
        if(S+v[i]<=mij) S+=v[i];
        else{
            j++;
            S=v[i];
        }
      }
      if(j>k)
      {
        st=mij+1;
      }
      else
      {
        dr=mij-1;
        sol=mij;
      }
    }
  cout<<sol;
}