Cod sursa(job #2986169)

Utilizator alexandru_strAlexandru Str alexandru_str Data 27 februarie 2023 20:47:07
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>

using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16001];
int main()
{
    int n, k, i, searc, st, dr, cap, mid, nrtrans, alltrans;
    in>>n>>k;
    for(i=1; i<=n; ++i)
    {
        in>>v[i];
    }
    st=1;
    dr=16000*16000;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        cap=mid;
        nrtrans=1;
        alltrans=0;
        for(i=1; i<=n; i++)
        {
            if(mid<v[i])
            {
                st=mid+1;
                i=n+1;
                alltrans=1;
            }
            else
            {
                if(cap-v[i]>=0)
                    cap-=v[i];
                else
                {
                    cap=mid-v[i];
                    nrtrans++;
                }
            }
        }
        if(nrtrans>k||alltrans==1)
        {
            st=mid+1;
        }
        else
        {
            dr=mid-1;
            searc=mid;
        }
    }
    out<<searc;
    return 0;
}