Cod sursa(job #2850388)

Utilizator andreitricaAndrei Trica andreitrica Data 16 februarie 2022 18:30:05
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin ("transport.in");
ofstream fout ("transport.out");
const int NMAX=16000;
int v[NMAX+5];
int N, K;

bool ok(int C)
{
    int s, i, tr;
    tr=s=0;
    for (i=1; i<=N; ++i)
    {
        if (v[i]>C)
            return 0;
        s=s+v[i];
        if (s>C)
        {
            tr++;
            s=v[i];
        }
        if (s<=C) tr++;
        return tr<=K;
    }
}

int bs(int st, int dr)
{
    int last=-1, med;
    while (st<=dr)
    {
        med=(st+dr)/2;
        if (ok(med))
        {
            last=med;
            dr=med-1;
        }
        else st=med+1;
    }
    return last;
}

int main()
{
	int i, vmax;
	fin>>N>>K;
	vmax=0;
	for (i=1; i<=N; ++i)
    {
        fin>>v[i];
        vmax=vmax+v[i];
    }
    fout<<bs (1, NMAX);
    return 0;
}