Cod sursa(job #323253)

Utilizator freak93Adrian Budau freak93 Data 11 iunie 2009 13:44:09
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 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,mint;

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

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

    for(i=1;i<=n;++i)
    {
        f>>a[i];
        if(a[i]>mint) mint=a[i];
    }

    j=16000*16000;

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

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

    g<<i+1<<"\n";

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

    return 0;
}