Cod sursa(job #1932767)

Utilizator waren4Marius Radu waren4 Data 20 martie 2017 08:48:59
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("transport.in"); ofstream g("transport.out");
int n,k,i,mij,p,st,dr,x,a[16004];

int check() {
    int nr,s,j; bool ok = 1;
    nr = 1;
    j = 1;
    s = 0;
    while (j <= n && ok) {
        if(s + a[j] <= mij) {
            while(s + a[j] <= mij) {
                s += a[j];
                ++j;
                if (j > n) {
                    break;
                }
            }
        }
        if (s == 0) {
            nr = 0;
            ok = 0;
        }
        else {
            s = 0;
            if (j <= n) {
                ++nr;
            }
        }
    }
    return nr;
}
int main()
{
    f>>n>>k;
    for(i = 1; i <= n; ++i) {
        f>>a[i];
    }
    st = 1;
    dr = 256000000;
    while(st <= dr) {
        mij = st + (dr - st) / 2;
        p = check();
        if (p == 0 || p > k) {
            st = mij + 1;
        }
        else {
            x = mij;
            dr = mij - 1;
        }
    }
    g<<x;
    return 0;
}