Cod sursa(job #323249)

Utilizator freak93Adrian Budau freak93 Data 11 iunie 2009 13:32:06
Problema Transport Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<fstream>
#define maxn 17000

using namespace std;

ifstream f("transport.in");
ofstream g("transport.out");

int a[maxn],stiva[maxn],i,j,k,n,step,p;

int calc(int k)
{
    int i=1,t=0,r=0;
    while(i<=n)
    {
        if(a[i]+t>k)
        {
            ++r;
            t=0;
        }
        t+=a[i];
        ++i;
    }
    ++r;
    return r;
}

int main()
{
    f>>n>>k;

    for(i=1;i<=n;++i)
        f>>a[i];

    j=16000;

    for(step=1;step<j;step<<=1);

    for(i=0;step;step>>=1)
        if(i+step<=j&&calc(i+step)>k)
            i+=step;

    while(calc(i)>k) ++i;

    g<<i<<"\n";

    f.close();
    g.close();

    return 0;
}