Cod sursa(job #2218584)

Utilizator PetrisorAnghel Petrisor Petrisor Data 5 iulie 2018 09:12:23
Problema Transport Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <fstream>
#include <iostream>
using namespace std;

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

int v[16005], n, k;
int verif(int capac)
{   int l = 0, s = 0, i = 1;
    while(i <= n)
    {
        s = 0;
        while(s <= capac && i <= n)
        s += v[i];
        i++;
        if(s > capac)
        s -= v[i - 1];
        --i;
        l++;
    }

    if(l <= k)
       return -1;
    return 1;
}

int binar(int x, int y)
{
    int left = x, right = y, c, t;
    while(left <= right)
    {
        c = (left + right) / 2;
        if(verif(c) == -1)
        {
            t = c;
            right = c - 1;
        }
        else
            if(verif(c) == 1)
                left = c + 1;
    }
    return t;
}

int main()
{
    int vmin = -1, vmax = 0;
    f >> n >> k;
    for(int i = 1; i <= n;i++)
    {
        f >> v[i];
        if(v[i] > vmin)
           vmin = v[i];
           vmax += v[i];
    }

    int u = binar(vmin,vmax);
    g << u;
    return 0;
}