Cod sursa(job #2018526)

Utilizator tudoroprisTudor Opris tudoropris Data 5 septembrie 2017 12:02:04
Problema Transport Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#include <vector>

using namespace std;

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

int n,k,x,sum,rasp;

vector <int>v;

bool incape(int sz)
{
    int nrtrans=1,sum=0;
    for(int i=1; i<=n; i++)
    {
        if(sum+v[i]<=sz)
            sum+=v[i];
        else
        {
            nrtrans++;
            sum=v[i];
        }
    }
    return(nrtrans<=k);
}

int main()
{
    in>>n>>k;
    v.push_back(-1);
    for(int i=1; i<=n; i++)
    {
        in>>x;
        v.push_back(x);
        sum+=x;
    }
    int l=1;
    int r=sum;
    while(r>=l)
    {
        int m=(l+r)/2;
        if(incape(m))
        {
            r=m-1;
            rasp=m;
        }
        else
        {
            l=m+1;
        }
    }
    out<<rasp;
}