Cod sursa(job #2854034)

Utilizator alexddAlexandru Dima alexdd Data 20 februarie 2022 20:53:38
Problema Transport Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
#define ll long long
int n,k,sum;
int v[16001];
bool verif(int c)
{
    int cnt=1,aux=0;
    for(int i=1;i<=n;i++)
    {
        if(v[i]>c)
            return 0;
        if(aux+v[i]>c)
        {
            cnt++;
            aux=0;
        }
        aux+=v[i];
    }
    if(cnt<=k)
        return 1;
    else
        return 0;
}
int cautare_binara()
{
    int st,dr,mij;
    st=1;
    dr=sum;
    while(st<=dr)
    {
        mij=(st+dr)/2;
        if(verif(mij)==1)
        {
            if(mij==1 || verif(mij-1)==0)
            {
                return mij;
            }
            else
                dr=mij-1;
        }
        else
            st=mij+1;
    }
}
int main()
{
    fin>>n>>k;
    for(int i=1;i<=n;i++)
    {
        fin>>v[i];
        sum+=v[i];
    }
    fout<<cautare_binara();
}