Cod sursa(job #323248)
Utilizator | Data | 11 iunie 2009 13:30:24 | |
---|---|---|---|
Problema | Transport | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.66 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;
g<<i+1<<"\n";
f.close();
g.close();
return 0;
}