Cod sursa(job #2079502)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 1 decembrie 2017 14:29:30
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
#define MAXN 16000

using namespace std;

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

int n,k,v[MAXN],maxim = 0;

void cit(){
    in>>n>>k;
    for(int i = 0 ; i < n; i ++){

        in>>v[i];
    }
}
bool verificare(int x){
    int cnt = 1,sum = 0;

    for(int i = 0 ; i < n;i ++){

        if(x < v[i])
            return false;
        if(sum + v[i] <= x)
            sum += v[i];
        else{
            sum = v[i];
            cnt++;
        }
    }

    if(cnt <= k)
        return true;
    return false;

}
void cautbin(){
    int r = 0,pas = 1<<14;
    while(pas){
        if(verificare(r+pas) == false)
            r += pas;
        pas /= 2;
    }
    out<<r+1;
}

int main()
{
    cit();
    cautbin();

    return 0;
}