Cod sursa(job #2553108)

Utilizator RazvanucuPopan Razvan Calin Razvanucu Data 21 februarie 2020 17:01:35
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <set>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int N,v[16005],K,low,high,mid,ans=INT_MAX;
bool F(int Cap)
{
    int CapTrans=0,NumbTrans=0;
    for(int i=1;i<=N+1;i++)
    {
        if(CapTrans+v[i]>Cap)
        {
            CapTrans=v[i];
            NumbTrans++;
        }
        else CapTrans+=v[i];

        if(NumbTrans>K)
            return false;
    }

     return true;
}
int main()
{
    f>>N>>K;
    for(int i=1;i<=N;i++)
    {
      f>>v[i];
      low=max(low,v[i]);
      high+=v[i];
    }
    v[N+1]=1e9;
    while(low<=high)
    {
        mid=low+(high-low)/2;
        if(F(mid))
        {
            ans=min(ans,mid);
            high=mid-1;
        }
        else low=mid+1;

    }
   g<<ans;
        return 0;
}