Cod sursa(job #3160819)

Utilizator Stefan_ComanescuStefan Comanescu Stefan_Comanescu Data 25 octombrie 2023 09:03:03
Problema Transport Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>

using namespace std;
int v[16001];

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

int main()
{
    int n,i,st,dr,max=0,s=0,k,m,s1,cnt,r;
    cin>>n>>k;
    for (i=1; i<=n; i++)
    {
        cin>>v[i];
        s+=v[i];
        if (v[i]>max) max=v[i];
    }
    st=max;
    dr=s;
    while (st<=dr)
    {
        r=-1;
        s1=0;
        cnt=1;
        m=(st+dr)/2;
        for (i=1; i<=n; i++)
        {
            if (s1+v[i]<=m)
            {
                s1+=v[i];
            }
            else
            {
                s1=v[i];
                cnt++;
            }
        }
        if (cnt<=k)
        {
            r=m;
            dr=m-1;
        }
        else st=m+1;
    }
    cout<<r<<endl;


    return 0;
}