Cod sursa(job #3135748)

Utilizator Traian_7109Traian Mihai Danciu Traian_7109 Data 4 iunie 2023 11:07:57
Problema Transport Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <queue>

#define short int 

using namespace std;

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

const short NMAX = 16000;
short v[NMAX+5], n;

short nrtransports(const short &capacity)
{
    short current = 0, cnt = 1;

    for (short i = 1; i <= n; i++)
        if (v[i] > capacity) return NMAX+5;
        else if (v[i]+current > capacity) cnt++, current = v[i];
        else current += v[i];
    
    return cnt;
}

int main()
{
    ios_base :: sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);

    short k, x;
    fin>>n>>k;

    for (short i = 1; i <= n; i++) fin>>v[i];

    short left = 1, right = NMAX, solution;

    while (left <= right) {
        short middle = (left+right)/2;

        if (nrtransports(middle) <= k)
            solution = middle, right = middle-1;
        else left = middle+1;
    }

    fout<<solution;
    return 0;
}