Cod sursa(job #1505460)

Utilizator SmitOanea Smit Andrei Smit Data 19 octombrie 2015 10:51:06
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream>

using namespace std;

int n,k,a[16003],sum;

inline void Citire()
{
    int i;
    ifstream fin("transport.in");
    fin>>n>>k;
    for(i=1;i<=n;++i)
    {
        fin>>a[i];
        sum+=a[i];
    }
    fin.close();
}

inline bool Verifica(int M)
{
    int i,s,nrtrans;
    s=0;
    nrtrans=1;
    for(i=1;i<=n;++i)
    {
        if(a[i]>M)  return 0;
        if(s+a[i]<=M)   s+=a[i];
        else
        {
            nrtrans++;
            s=a[i];
        }
    }
    if(nrtrans>k)   return 0;
    return 1;
}

inline void Solutie()
{
    int st,dr,mijl,sol=0;
    st=1;
    dr=sum;
    while(st<=dr)
    {
        mijl=(st+dr);
        if(Verifica(mijl))
        {
            sol=mijl;
            dr=mijl-1;
        }
        else
            st=mijl+1;
    }
    ofstream fout("transport.out");
    fout<<sol<<"\n";
    fout.close();
}

int main()
{
    Citire();
    Solutie();
    return 0;
}