Cod sursa(job #1479506)

Utilizator mirunaveleaVelea Miruna Denisa mirunavelea Data 31 august 2015 15:24:28
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream out("transport.out");

int main()
{
    int n,k,a[16001],maxim,transport,i,mij,st,dr,suma,s=0;
    fin>>n>>k;
    fin>>a[0];
    maxim=a[0];
    for(i=1; i<n; i++)
    {
        fin>>a[i];
        maxim=max(maxim,a[i]);
        s+=a[i];
    }
    st=maxim-1;
    dr=s+1;
    while(st+1<dr)
    {
        mij=(st+dr)/2;
        transport=1;
        suma=0;
        for(i=0; i<n; i++)
        {
            if(suma+a[i]<=mij)
                suma+=a[i];
            else
            {
                suma=a[i];
                transport++;
            }
        }
        if(transport<=k)
            dr=mij;
        else
            st=mij;
    }
    out<<dr;
    fin.close();
    out.close();
    return 0;
}