Cod sursa(job #2156181)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 8 martie 2018 15:42:00
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;

ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n,k,i,st,dr,maxi,mid;
int v[16002];
int verif (int x){
    int nr = 0;
    int ap = 1;
    for (int i=1;i<=n;i++){
        if (nr + v[i] <= x)
            nr += v[i];
        else{
            nr = v[i];
            if (nr > x)
                return 0;
            ap++;
        }
    }
    if (ap <= k)
        return 1;
    else
        return 0;
}

int main (){

    fin>>n>>k;
    for (i=1;i<=n;i++){
        fin>>v[i];
        maxi += v[i];
    }
    /// cautam binar capacitatea camionului
    st = 1;
    dr = maxi;
    while (st <= dr){
        mid = (st+dr)/2;
        if (verif (mid)) /// putem transporta toate saltele cu o capacitate mid, deci cautam una mai mica
            dr = mid-1;
        else
            st = mid+1;
    }

    fout<<st;


    return 0;
}