Cod sursa(job #1587029)

Utilizator stanciuandreiStanciulescu Andrei stanciuandrei Data 1 februarie 2016 19:30:57
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>
#include <fstream>
using namespace std;
//2^28 valoarea maxima posibila a volumului transportat
ifstream in("transport.in");
ofstream out("transport.out");
int p[16000], n, k;
bool sePoate(int x)
{
    //cout<<x<<"\n";

    int cnt=0, index=0, ccap=0;
    while(index<n)
    {

        ccap=0;
        if(p[index]>x)
            return 0;
        while(ccap+p[index]<=x)
            ccap+=p[index++];
        cnt++;
    }
    if(cnt<=k)
        return 1;
    return 0;

}
int main()
{
    in>>n>>k;
    for(int i=0;i<n;i++)
        in>>p[i];
    int vol=0, pas=1<<28;
    while(pas)
    {
        if(!sePoate(vol+pas))
            vol+=pas;
        pas>>=1;
    }
    out<<vol+1;
}