Cod sursa(job #2472728)

Utilizator emanuel27iIonescu Emanuel emanuel27i Data 12 octombrie 2019 19:08:12
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>

using namespace std;

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

int v[100000],n,y;

bool solve(int x)
{
    int k=1,s=0;
    for(int i=0;i<n;i++)
    {
        s+=v[i];
        if(s>x)
        {
            k++;
            s=v[i];
        }
    }
    return k<=y;
}

int bin(int st,int dr)
{
    int mij,last=dr;
    bool a;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        a=solve(mij);
        if(a==0)
            st=mij+1;
        else
            last=mij,dr=mij-1;
    }
    return last;
}

int main()
{
    int maxm=0;
    cin>>n>>y;
    for(int i=0;i<n;i++)
    {
        cin>>v[i];
        if(maxm<v[i])
            maxm=v[i];
    }

    cout<<bin(maxm, 1000000000);
    return 0;

}