Cod sursa(job #2724309)

Utilizator Adela_PetrePetre Adela Adela_Petre Data 16 martie 2021 22:02:55
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const int NMAX = 16000;
int N, K;
int v[1 + NMAX];

bool verif(int s)
{
    int sum = 0, nr = 0;
    for (int i = 1; i <= N; i++)
    {
        if(sum + v[i] <= s)
        {
            sum += v[i];
        }
        else
        {
            nr++;
            if (s >= v[i])
            {
                sum = v[i];
            }
            else
            {
                return 0;
            }
        }
    }
    if(s > 0)
        nr++;
    return nr <= K;
}
int main()
{
    int st, mid, dr, val;
    fin >> N >> K;
    for (int i = 1; i <= N; i++)
        fin >> v[i];
    st = 1, dr = NMAX * N;
    while (st <= dr)
    {
        mid = (st + dr) / 2;
        if(verif(mid) == 0)
        {
            st = mid + 1;
             val = mid;
        }
        else
        {
            dr = mid - 1;

        }
    }
    fou << val;
    return 0;
}