Cod sursa(job #1424173)

Utilizator klbraduRadu Capalb klbradu Data 23 aprilie 2015 17:51:37
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>
using namespace std;
int n, s[16001], M, sum, p, u, c, cc, t, k, i;

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

int main(){
    fin>>n>>k;
    for(i=1;i<=n;i++){
        fin>>s[i];

        if(s[i] > M){
            M = s[i];
        }
        sum += s[i];
    }

    p = M;
    u = sum;

    while(p <= u){
        c = (p+u)/2;
        t = 1;
        cc = c-s[1];
        for(i=2;i<=n;i++){
            if(s[i] <= cc){
                cc -= s[i];
            }else{
                t++;
                cc = c - s[i];
            }
        }
        if(t <= k){
            u = c-1;
        }else{
            p = c+1;
        }
    }

    fout<<p;
}