Cod sursa(job #2213322)

Utilizator mihneazarojanuMihnea Bogdan Zarojanu mihneazarojanu Data 16 iunie 2018 11:21:48
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <fstream>

using namespace std;

ifstream cin("transport.in");
ofstream cout("transport.out");

const int INF=16001;

int trans(int v[],int n,int V)
{
    int vc=0,nr=0;
    for(int i=0;i<n;i++)
    {
        if(v[i]>V)
        {
            return INF;
        }
        if(v[i]>vc)
        {
            nr++;
            vc=V;
        }
        vc-=v[i];
    }
    return nr;
}

int cb(int v[],int k,int n)
{
    int V=0,pas=1<<28;
    while(pas!=0)
    {
        if(trans(v,n,V+pas)>k)
        {
            V+=pas;
        }
        pas/=2;
    }
    V++;
    return V;
}

int main()
{
    int n,k,i,v[16000];
    cin>>n>>k;
    for(i=0;i<n;i++)
    {
        cin>>v[i];
    }
    cout<<cb(v,k,n);
    return 0;
}