Cod sursa(job #2757842)

Utilizator Mihai_AritonMihai Ariton Mihai_Ariton Data 6 iunie 2021 20:39:26
Problema Transport Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
using namespace std;
 
int v[16001];
int main()
{
    ifstream cin("transport.in");
    ofstream cout("transport.out");
    
    int n, maxc=0, minc=0, mid, dr, st, sumac=0, i=1, k, cnt=0;
    cin>>n>>k;
    for(int i=1; i<=n; i++)
    {
        cin>>v[i];
        if(v[i]>minc)
        minc=v[i];
        maxc+=v[i];
    }
    dr=maxc;
    st=minc;
    //cout<<dr<<" "<<st;
    //cout<<"3242938792379";
    while(st<=dr)
    {
        mid=(st+dr)/2;
        //cout<<"mid = "<<mid<<endl;
        for(int i=1; i<=n; i++)
        {
            //cout<<"i = "<<i<<endl;
            //cout<<"v[i] = "<<v[i]<<endl;
            sumac+=v[i];
            //cout<<"sumac = "<<sumac<<endl;
            if(sumac>mid)
            {
                cnt++;
                //cout<<"cnt = "<<cnt<<endl;
                sumac=v[i];
                //cout<<"sumac = "<<sumac<<endl;
            }
        }
        if(i==n)
            cnt++;
        if(cnt<=k)
            dr=mid-1;
        else
            st=mid+1;
        /*cout<<"st = "<<st<<endl;
        cout<<"dr = "<<dr<<endl;*/
        sumac=0;
    }
    cout<<mid;

    
    return 0;
}