Cod sursa(job #2954675)

Utilizator Turcanu_DavidTurcanu David Turcanu_David Data 14 decembrie 2022 23:42:31
Problema Transport Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>

using namespace std;

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

int v[16006];

int n, k;

bool check(int cap)
{
    int i=1;
    int cam=0;
    int sum=0;
    while(i <= n && cam <= k)
    {
        sum+=v[i];
        if(v[i] > cap)
            return false;
        if(sum > cap)
        {
            sum=v[i];
            cam++;
        }
        i++;
    }
    if(sum > 0)
        cam++;
    cout<<cap<<" "<<cam<<'\n';
    if(cam <= k)
        return true;
    return false;
}

int main()
{
    cin>>n>>k;
    for(int i=1; i<=n; i++)
    {
        cin>>v[i];
    }
    int ans;
    int st, dr, mid;
    st=1; dr=16000*16000;
    while(st <= dr)
    {
        mid=(st+dr)/2;
        if(check(mid))
        {
            ans=mid;
            dr=mid-1;
        }
        else
        {
            st=mid+1;
        }
    }
    cout<<ans;
    return 0;
}