Cod sursa(job #3135918)

Utilizator Traian_7109Traian Mihai Danciu Traian_7109 Data 4 iunie 2023 18:01:28
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 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++) {
        current += v[i];

        if (current > capacity) cnt++, current = v[i];
    }
    
    return cnt;
}

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

    short k, x, maxnr = 0;
    int sum = 0;
    fin>>n>>k;

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

    short left = maxnr, right = sum, 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;
}