Cod sursa(job #2694433)

Utilizator AndreiStreheStreche Andrei Claudiu AndreiStrehe Data 9 ianuarie 2021 11:06:56
Problema Transport Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <fstream>

using namespace std;

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

int n,k,i,max1,st,mij,dr,spatiucamion,transporturi,valoarecautata,suma;
int volume[16005];

int main()
{
    f>>n>>k;

    for(i=1;i<=n;i++)
    {
        f>>volume[i];
        if(volume[i]>max1)
        {
            max1=volume[i];
        }
        suma+=volume[i];
    }

    st=max1;
    dr=suma;

    while(dr-st>0)
    {
        mij=(st+dr+1)/2;

        spatiucamion=mij;
        for(i=1;i<=n;i++)
        {
            if(spatiucamion>=volume[i])
            {
                spatiucamion-=volume[i];
            }
            else
            {
                spatiucamion=mij-volume[i];
                transporturi++;
            }
        }
        if(spatiucamion>0)
        {
            transporturi++;
        }

        if(transporturi>k)
        {
            st=mij+1;
        }
        else if (transporturi==k)
        {
            valoarecautata=mij;
            dr=mij-1;
        }
        else
        {
            dr=mij-1;
        }
        transporturi=0;
    }

    g<<valoarecautata;

    return 0;
}