Cod sursa(job #1967165)

Utilizator GodSlayerTabara Emanuel GodSlayer Data 15 aprilie 2017 23:23:17
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <iostream>
#include <cstdio>>
using namespace std;

int main()
{
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
  int n,k,v[16001],i,l1,l2,m,t,s,elem;
    cin>>n>>k;
    l1=l2=0;
    for(i=1;i<=n;i++)
    {
      cin>>v[i];
      if(l1<v[i])
        l1=v[i];
      l2=l2+v[i];
    }
    while(l1<=l2)
    {
      m=(l1+l2)/2;
      t=1;s=0;
      for(i=1;i<=n;i++)
        if(s+v[i]<=m)
          s=s+v[i];
        else
        {
          t++;
          s=v[i];
        }
        if(t>k)
          l1=m+1;
        else
        {
          elem=m;
          l2=m-1;
        }
    }
    cout<<elem;
    return 0;
}