Cod sursa(job #2788723)

Utilizator eduardbuchmaneduardbuchman eduardbuchman Data 26 octombrie 2021 12:48:02
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;
int v[16001];
int main()
{
    ifstream in("transport.in");
    ofstream out("transport.out");
    int n,k,i,st,dr,mijloc,transporturi,suma,solutie;
    in>>n>>k;
    st=dr=0;
    for(i=1;i<=n;i++)
    {
        in>>v[i];
        if(v[i]>st)st=v[i];
        dr=dr+v[i];
    }
    while(st<=dr)
    {
        mijloc=(st+dr)/2;
        transporturi=0;
        suma=0;
        for(i=1;transporturi<=k&&i<=n;i++)
        {
            if(v[i]+suma>mijloc)
            {
                transporturi++;
                suma=0;
            }
            suma=suma+v[i];
        }
        if(transporturi+1>k)st=mijloc+1;
        else{
                solutie=mijloc;
                dr=mijloc-1;
            }
    }
    out<<solutie;
    return 0;
}