Cod sursa(job #3296721)

Utilizator badeaalesiaAlesia Badea badeaalesia Data 15 mai 2025 21:21:43
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>
#include<fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");

int n,k,c,v[16005];
//n=nr saltele; k=max transporturi; v=volumuri; c=max capacitate, cerinta
int i, vmax, vcurent;

int main()
{
    fin>>n>>k;
    for(i=1;i<=n;i++){
        fin>>v[i];
        vcurent+=v[i];
        if(v[i]>vmax)
            vmax=v[i];}
    int st=vmax,dr=vcurent;
    while(st<=dr)
    {
        int mij=(st+dr)/2;
        int cate=0;
        vcurent=0;
        for(i=1;i<=n;i++)
        {
            if(v[i]<=mij && (vcurent+v[i])<=mij)
            {
                vcurent+=v[i];
            }
            if((vcurent+v[i+1])>mij)
            {
                vcurent=0;
                cate++;
            }
        }
            if(vcurent!=0)
                cate++;
            if(cate>k)
                st=mij+1;
            else{
                dr=mij-1;
                c=mij;
            }

    }
    fout<<c;
    return 0;
}