Cod sursa(job #1227379)

Utilizator mihaimusatMihai Musat mihaimusat Data 10 septembrie 2014 10:44:48
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <fstream>

using namespace std;

long long n,k,i,st,dr,mid,s,nr,maxi;
long long v[16001];
long long sol;

long long transport(long long volum)
{
    long long j,trans=0,sum=0;
    for(j=1; j<=n; j++)
    {
        if(sum + v[j] <= volum)
            sum += v[j];
        else
        {
            sum=v[j];
            trans++;
        }
    }
    trans++;
    return trans;
}

int main()
{   ifstream f("transport.in");
    ofstream g("transport.out");
    f>>n>>k;
    for(i=1;i<=n;i++)
    {
        f>>v[i];
        s+=v[i];
        if(maxi < v[i])
            maxi=v[i];
    }

    st=maxi;
    dr=s;

    while(st<=dr)
    {
        mid=(st+dr)/2;
        nr=transport(mid);
        if(nr<=k)
        {
            dr=mid-1;
            sol=mid;
        }
        else
        {
            st=mid+1;
        }
    }
    g<<sol;
    return 0;
}