Cod sursa(job #2777514)

Utilizator Victor280605Victor Dragos Victor280605 Data 23 septembrie 2021 16:13:22
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int sir[16005];
int n, k;
int maxi=0, mini = 16001;
void read()
{
    in >> n >> k;
    int i;
    for(i=1; i<=n; i++)
    {
        in >> sir[i];
        if(sir[i]>maxi)
        {
            maxi = sir[i];
        }
    }
}

int main()
{
    read();
    int st,dr,j,mij,suma,i,sol;
    st = maxi;
    dr = 16000 * 16000;
    while(st<=dr)
    {
        mij = (st + dr) / 2;

        suma = 0;
        j=1;
        for(i=1;i<=n;i++){
            if(suma+sir[i]<=mij){
                suma += sir[i];

            }
            else{
                suma = sir[i];
                j++;
            }
        }
        if(j<=k){
            sol=mij;
            dr=mij-1;
        }
        else{
            st=mij+1;
        }

    }
    out << sol;

}