Cod sursa(job #2121890)

Utilizator matei8787Matei Dobrea matei8787 Data 4 februarie 2018 14:06:03
Problema Transport Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16001];
int main()
{
    int st,dr,max=0,min=-1,n,nr,k,s,pp=0,ans,mans;
    in>>n>>k;
    for ( int i = 1 ; i <= n ; i++ ){
        in>>v[i];
        if ( min < v[i] )
            min = v[i];
        max += v[i];
    }
    st = min;
    dr = max;
    while ( st < dr ){
        s = ( st + dr ) / 2;
        ans = s;
        int i,ck = k;
        for ( i = 1 ; i <= n && ck >= 0 && v[i] != 0 ; ck-- , s = ans ){
            while ( s - v[i] >= 0 && v[i] != 0 ){
                s -= v[i];
                i++;
            }
        }
        if ( i - 1 < n ){
            pp = 0;
        }
        else
            pp = 1;
        if ( i - 1 == n && ck >= 0  )
            mans = ans;
        if ( pp == 0 ){
            st = ans;
        }
        else
            dr = ans;
    }
    out<<mans;
    return 0;
}