Cod sursa(job #2975933)

Utilizator RaduIC12Ciocirlan Radu-Ioan RaduIC12 Data 7 februarie 2023 21:09:52
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>

using namespace std;

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

int maxi=-1, k, n, i, st, dr, m, drumuri, cap;
int v[16001];
long long sum;


int main()
{

    fin>>n>>k;
    for(i=1; i<=n; ++i){
        fin>>v[i];
        sum+=1ll*v[i];
        if( v[i] > maxi)
            maxi=v[i];
    }

    st=maxi;
    dr=sum;
    while( st <= dr)
    {
        m=(st + dr)/2;
        cap=m;
        drumuri=0;
        for(i=1; i<=n; ++i){
            if( cap - v[i] < 0){
                drumuri++;
                cap=m-v[i];
            }
            else cap-=v[i];
        }
        if( drumuri < k) dr=m-1;
        else st=m+1;
    }

    fout<<st;
    return 0;
}