Cod sursa(job #1498605)

Utilizator ochisorul55Vlad Andrei Serban ochisorul55 Data 8 octombrie 2015 20:36:54
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<cstdio>
#include<iostrem>
#define m 16001
int v[m];
int main()
{
    freopen("transport.in","r",stdin);
    freopen("transport.out","w",stdout);
    int n, i, cm, c, cM, m, j, s, a, r;
    cin>>n>>a;
    cM=0;
    m=0;
    for(i=1; i<=n; i++)
    {
        cin>>v[i];
        cM+=v[i];
        if(v[i]>m)
            m=v[i];
    }
    cm=m;
    while(cm<=cM)
    {
        c=(cm+cM)/2;
        i=1;
        j=0;
        while(i<=n)
        {
            s=0;
            while(s+v[i]<=c && i<=n)
            {
                s+=v[i];
                i++;
            }
            j++;
        }
        if(j<=a)
        {
            cM=c-1;
            r=c;
        }
        else
            cm=c+1;
    }
    cout<<r;
    return 0;
}