Cod sursa(job #1700627)

Utilizator mihai.constantinConstantin Mihai mihai.constantin Data 10 mai 2016 21:49:49
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
using namespace std;

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

#define dmax 16005
#define L 30

int v[dmax];

int N, K;

int carry(int t)
{
    int cnt, s;

    cnt = s = 0;

    for(int i = 1; i <= N; i++)
    {
        if(s + v[i] > t)
        {
            cnt += 1;
            s = 0;
        }

        if(v[i] > t) return false;

        s += v[i];
    }

    if(s > 0) cnt += 1;

    return cnt <= K;
}

int Binary_Search()
{
    int i, pas;

    i = 0;
    pas = 1 << L;

    while(pas != 0)
    {
        if(!carry(i + pas)) i += pas;

        pas /= 2;
    }

    return i + 1;
}

int main()
{
    in >> N >> K;

    for(int i = 1; i <= N; i++) in >> v[i];

    out << Binary_Search();

    return 0;
}