Cod sursa(job #2278118)

Utilizator bleo16783FMI Bleotiu Cristian bleo16783 Data 7 noiembrie 2018 12:09:13
Problema Transport Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <iostream>
#include <fstream>
using namespace std;
#define N 16100
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[N],i,j,n,k,s,mx;
bool check(int capacitate)
{
    int curr = 0,it,nr = 0;
    for( it = 0;it < n;++it)
        if(curr + v[it] <= capacitate)
            curr += v[it];
        else
        {
            ++nr;
            curr = v[it];
        }
    return (nr <= k);
}
int bs(int l,int r)
{
    if(check(l))
        return l;
    int poz = l;
    for(int i = r - l; i ; i >>= 1)
        if(poz + i < r && !check(poz + i))
            poz += i;
    return poz + 1;
}
int main()
{
    fin >> n >> k;
    mx = 0;
    s = 0;
    for(i = 0; i < n; ++i)
    {
        fin>>v[i];
        s += v[i];
        mx = max(v[i],mx);
    }
    fout << bs(mx,s);
    return 0;
}