Cod sursa(job #2026127)

Utilizator NashikAndrei Feodorov Nashik Data 23 septembrie 2017 18:56:01
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
//#include <iostream>
#include <fstream>
using namespace std;
long long v[16005];

int camioane(int cant,int n,int k)
{
    int drum=1,sum=0;
    for(int i=1;i<=n;i++)
    {
        sum+=v[i];
        if(sum>cant){
            sum=v[i];
            drum++;
        }
    }
    return drum;
}
int main()
{
    ifstream cin("transport.in");
    ofstream cout("transport.out");
    long long ma=-1,sol=16005,n,k,st,dr,mij;
    cin>>n>>k;
    for(int i=1;i<=n;i++)
        {
            cin>>v[i];
            ma=max(v[i],ma);
        }
    st=ma;
    dr=256000000;
    while(st<=dr){
        mij=(st+dr)/2;
        int p=camioane(mij,n,k);
        if(p<=k){
            sol=mij;
            dr=(st+dr)/2-1;
        }
        else
            st=(st+dr)/2+1;

    }
    cout<<sol;
    return 0;
}