Cod sursa(job #2694475)

Utilizator AndreiStreheStreche Andrei Claudiu AndreiStrehe Data 9 ianuarie 2021 13:18:07
Problema Transport Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.43 kb
#include <fstream>

using namespace std;

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

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

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=25600000005;

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

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

            else
            {
                spatiucamion=volume[i];
                transporturi++;
            }
        }
            transporturi++;

        if(transporturi>k)
        {
            st=mij+1;
        }
        else
        {
            valoarecautata=mij;
            dr=mij-1;
        }
        transporturi=0;
    }
/*
    mij--;
    spatiucamion=mij;
    for(i=1;i<=n;i++)
    {
        if(spatiucamion>=volume[i])
        {
            spatiucamion-=volume[i];
        }
        else
        {
            spatiucamion=mij-volume[i];
            transporturi++;
        }
    }
    transporturi++;
    if(transporturi==k && mij<valoarecautata)
    valoarecautata=mij;
*/
    g<<valoarecautata;

    return 0;
}