Cod sursa(job #2783526)

Utilizator deerMohanu Dominic deer Data 14 octombrie 2021 17:12:27
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <iostream>

using namespace std;
int v[16001];
int main()
{
//    ifstream cin ("transport.in");
//    ofstream cout ("transport.out");
    int n, k, s, st, dr, mij, max, cnt, sum, sol;
    cin>>n>>k;
    cout<<k<<endl;
    s=0;
    max=-1;
    for (int i=0; i<n; i++)
    {
         cin>>v[i];
         if(v[i]>max)
            max=v[i];
         s+=v[i];
    }
    st=max;
    dr=s;
    sum=0;
    while (st<=dr)
    {
        mij=(st+dr)/2;
        cnt=0;
//        cout<<st<<" "<<dr<<" "<<mij<<" ";
//        cout<<mij<<" ";
        for (int i=0; i<n && cnt+1<=k ; i++)
        {
            if (sum+v[i]>mij)
            {
                cnt++;
                sum=0;
            }
            sum+=v[i];
            if (cnt>k)
                break;
        }
        cnt++;
        if (cnt>k)
            st=mij+1;
        else
        {
            sol=mij;
            dr=mij-1;
        }
        sum=0;
    }
    cout<<sol;
    return 0;
}