Cod sursa(job #1100047)

Utilizator felixiPuscasu Felix felixi Data 6 februarie 2014 16:02:27
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>

using namespace std;

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

int R;
int n,k,mx= -1, v[16002];

bool camion(int cap){
    int poz= 1, s=0, drum=0;
    while(poz<=n){
        drum++;
        s=0;
        while(s+v[poz]<=cap){
            s+=v[poz];
            poz++;
        }
    }
    if(drum<=k)return 1;
    else return 0;
}


int BS(int st, int dr){
    int mid;
    while(st<=dr){
        mid= (st+dr)/2;
        if( camion(mid)==1 ){
            R= mid;
            dr= mid-1;
        }
        else {
            st= mid+1;
        }
    }
    return R;
}

int main()
{
    int sum=0;
    in>>n>>k;
    for(int i=1; i<=n; i++){
        in>>v[i];
        if(v[i]>mx) mx= v[i];
        sum+=v[i];
    }
    out<<BS(mx, sum);
    in.close();
    out.close();
    return 0;
}