Cod sursa(job #2783513)

Utilizator deerMohanu Dominic deer Data 14 octombrie 2021 16:45:17
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

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;
    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;
    while (st<=dr)
    {
        mij=(st+dr)/2;
//        cout<<st<<" "<<dr<<" "<<mij<<endl;
        cnt=0;
        for (int i=0; i<n && cnt<=k; i++)
        {
            if (sum>mij)
            {
                cnt++;
                sum=0;
            }
            sum+=v[i];
        }
        if (cnt>k)
            st=mij+1;
        else
        {
            sol=mij;
            dr=mij-1;
        }
    }
    cout<<sol+1;
    return 0;
}