Cod sursa(job #507318)

Utilizator APOCALYPTODragos APOCALYPTO Data 5 decembrie 2010 19:35:25
Problema Transport Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
using namespace std;

#include<iostream>
#include<fstream>
#define nmax 16005
int N,K,a[nmax];
ofstream fout("transport.out");
int verif(int cap)
{int steps=0,s,i;

    for(i=1;i<=N;)
    {   s=0;

        if(a[i]>cap)
         return N*16001;

        while(s+a[i]<=cap && i<=N)
         s+=a[i],i++;
        steps++;
    }

    return steps;
}

void solve()
{int cnt,i;

    for(cnt=1;cnt<=N*16001;cnt=cnt*2);
    for(i=0;cnt;cnt/=2)
    {
        if(i+cnt<=N*16001)
          if(verif(i+cnt)>K)
           i=i+cnt;
    }
    fout<<i+1<<"\n";
}

void cit()
{int i;
    ifstream fin("transport.in");
    fin>>N>>K;
    for(i=1;i<=N;i++)
    {
        fin>>a[i];
    }
    fin.close();
}

int main()
{
    cit();

    solve();
    fout.close();
    return 0;

}