Cod sursa(job #804894)

Utilizator madalincppaslaru madalin cristian madalincp Data 30 octombrie 2012 16:54:08
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
using namespace std;

int N, K;
int V[16010];

bool is_possible (int C) {

    int nr=1, cap=0;
    for(int i=1; i<=N; i++){
        if(V[i]>C)
            return 0;

        if(cap+V[i]<=C)
            cap+=V[i];
        else{
            nr++;
            cap=V[i];
        }
    }

    if(nr<=K)
        return 1;

    return 0;

}

int main () {

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

    fin>>N>>K;
    for(int i=1; i<=N ; i++)
        fin>>V[i];

    /*
    for(int j=1; ; j++){

        if(is_possible (j)==1){
            fout<<j;
            break;
        }
    }*/

    int sol,st=1, dr=16000, mij;
    while(st<=dr){
        mij=(st+dr)/2;
        if(is_possible (mij)){
            sol=mij;
            dr=mij-1;
        }
        else{
            st=mij+1;
        }
    }
    fout<<sol;


    return 0;
}