Cod sursa(job #2079431)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 1 decembrie 2017 12:47:28
Problema Transport Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 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 i = 0,cnt = 0,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++;

        }
    }
    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;
}