Cod sursa(job #2242783)

Utilizator 123utilizator321Stanescu Liviu 123utilizator321 Data 19 septembrie 2018 15:42:56
Problema Transport Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>

using namespace std;

int v[16001],k,n;
int bs(int l);
bool f(int x);

int main()
{
    ifstream cin("transport.in");
    ofstream cout("transport.out");
    cin>>n>>k;
    for(int i=0;i<n;i++)
        cin>>v[i];
    cout<<bs(1600*1600);
    return 0;
}

int bs(int r)
{
    int l=0,mid;
    while(l<r)
    {
        mid=(l+r)/2;
        if(f(mid)==true)
            r=mid;
        else
            l=mid+1;
    }
    return l;
}

bool f(int  x)
{
    int transport=1,suma=0;
    for(int i=0; i<n ;i++)
    {
        suma+=v[i];
        if(suma>x)
        {
            transport++;
            suma=v[i];
        }
    }
    if(transport<=k)
        return true;
    return false;
}