Cod sursa(job #2716113)

Utilizator Ninja951Andrei Vila Ninja951 Data 4 martie 2021 18:47:15
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>

using namespace std;

ifstream in("transport.in");
ofstream out("transport.out");
int k,n,v[16001];
bool f(int x)
{
    int s=0,cnt=1;
    for(int i=1; i<=n; i++)
    {
        if(s+v[i]<=x)
        {
            s=s+v[i];
        }
        else
        {
            cnt++;
            if(x>=v[i])
            {
                s=v[i];
            }
            else
                return 0;
        }
    }
    if(cnt<=k)
    {
        return 1;
    }
    return 0;
}
int main()
{
    int st,mid,dr,minim;
    in>>n>>k;
    for(int i=1; i<=n; i++)
    {
        in>>v[i];
    }
    st=1;dr=n*16000;
    while(st<=dr)
    {
        mid=(st+dr)/2;
        if(f(mid)==0)
        {
            st=mid+1;
        }
        else
        {
            dr=mid-1;
            minim=mid;
        }
    }
    out<<minim;
    return 0;
}