Cod sursa(job #3245952)

Utilizator Matei_AndronacheMatei Andronache Matei_Andronache Data 1 octombrie 2024 11:22:13
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

using namespace std;
ifstream cin ("transport.in");
ofstream cout ("transport.out");
int n,k,v[16000],max1=1;
int transport (int vol)
{
    int s=0,i=0,t=0;
    for (i=0;i<n;i++)
    {
        if (s+v[i]>vol)
        {
            s=0;
            t++;
        }
        if (s+v[i]==vol)
        {
            s=0;
            t++;
            i++;
            if (i==n)
                break;
        }
        s=s+v[i];
    }
    if (s>0)
        t++;
    return t;
}
int main()
{
    int i;
    cin>>n>>k;
    for (i=0; i<n; i++)
    {
        cin>>v[i];
        if (max1<v[i])
            max1=v[i];
    }
    int st=max1,dr=16000*16000,m=(st+dr)/2,poz;
    while (st<=dr)
    {
        m=(st+dr)/2;
        if (transport(m)<=k)
        {
            poz=m;
            dr=m-1;
        }
        else
            st=m+1;
    }
    cout<<poz;
    return 0;
}