Cod sursa(job #2528711)

Utilizator CraiuAndreiCraiu Andrei David CraiuAndrei Data 22 ianuarie 2020 13:40:52
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");

int a[100004],n,k;

int Test(int C)
{
    ///daca pot impartii vectorul in cel mult k
    ///secv,fiecare secv ,avand suma <=C
    int i,s=0,cnt=1;
    for(i=1;i<=n;i++)
    {
        if(a[i]>C)return 0;
        if(s+a[i]<=C)s+=a[i];
        else
        {
            cnt++;
            s=a[i];
        }
    }
    return (cnt<=k);
}

int CB()
{
    int st,dr,p,mijl;
    st=1;dr=256000000;p=1;
    while(st<=dr)
    {
        mijl=(st+dr)/2;
        if(Test(mijl)==1)
        {
            p=mijl;
            dr=mijl-1;
        }
        else st=mijl+1;
    }
    return p;
}

int main()
{
    int i;
    fin>>n>>k;
    for(i=1;i<=n;i++)
        fin>>a[i];
    fout<<CB();
    return 0;
}