Cod sursa(job #1516757)

Utilizator rares00Foica Rares rares00 Data 3 noiembrie 2015 15:22:41
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int n,k,v[16001];
int sum,nrmax;
void citeste()
{
    in>>n>>k;
    for(int i=1;i<=n;i++)
    {
        in>>v[i];
        sum+=v[i];
        if(nrmax<v[i])
            nrmax=v[i];
    }
}
int nrTransp(int c)
{
    int x=v[1],nr=0;
    for(int i=2;i<=n;i++)
    {
        if(x+v[i]<=c)
            x+=v[i];
        else
        {
            x=v[i];
            nr++;
        }
    }
    return ++nr;
}
int bs(int st,int dr)
{
    int mij=st+(dr-st)/2;
    if(nrTransp(mij)>k)
        bs(mij+1,dr);
    else
    {
        if(mij==st)
            return mij;
        else if(nrTransp(mij-1)>k)
            return mij;
        else
            bs(st,mij-1);
    }
}
int main()
{
    citeste();
    out<<bs(nrmax,sum);
    return 0;
}