Cod sursa(job #2582436)

Utilizator Katherine456719Swan Katherine Katherine456719 Data 16 martie 2020 18:39:00
Problema Transport Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <iostream>
#include <fstream>
using namespace std;
int v[16005],maxim=-1;
bool verif(int k,int x,int n)
{
    int l=0;
    if(maxim<=x)
    {
    for(int i=1;i<=n;i++)
    {
        long long s=0;
        while(s+v[i]<=x and i<=n)
        {
            s+=v[i];
            i++;
        }
        if(s)
            {l++;i--;}
    }
    if(k<l)
        return false;
    else
        return true;
    }else return false;
}
int cautare(int n,int k)
{
    int r=0;
    for(int p=5; p>=0; p--)
        if(verif(k,r+(1<<p),n)==false)
            r+=(1<<p);
    return r+1;
}
int main()
{
    ifstream cin("transport.in");
    ofstream cout("transport.out");
    int n,k;
    cin>>n>>k;
    for(int i=1; i<=n; i++)
    {
        cin>>v[i];
        if(v[i]>maxim)
            maxim=v[i];
    }
    cout<<cautare(n,k);
    return 0;
}