Cod sursa(job #1864360)

Utilizator sergiudnyTritean Sergiu sergiudny Data 31 ianuarie 2017 18:41:21
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");

int n,k,v[100005];

bool check(int mid) {
    int interm=0,nrsecv=1;
    for(int i=1;i<=n;++i)
    {
        interm+=v[i];
        if(interm>mid) interm=v[i],nrsecv++;
    }
    if(nrsecv>k)
        return 0;
    return 1;
}

/*bool functie (int i)
{
    int c = 1, total = 0;
    for (int j = 0; j < n; ++j)
    {
        if (total + s[j] > i)
        {
            ++c;
            total = 0;
        }
        total+=s[j];
    }
    if (c > k)
        return 0;
    return 1;
}*/

int main() {
    int i,st=0,dr,mid,last;

    fin>>n>>k;

    for(i=1;i<=n;++i)
    {
        fin>>v[i];
        st=max(st,v[i]);
    }

    dr=16000*16000;

    while(st<=dr)
    {
        mid=(st+dr)/2;

        if(check(mid))
        {
            dr=mid-1;
            last=mid;
        }
        else
            st=mid+1;
    }
    fout<<last;

	return 0;
}