Mai intai trebuie sa te autentifici.
Cod sursa(job #1083268)
Utilizator | Data | 15 ianuarie 2014 19:58:22 | |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.76 kb |
#include <iostream>
#include <fstream>
#define nm 16005
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, k, v[nm], i, step, sumaVol=0, maxVol=0;
int drum(int vol)
{
int nr = 1, s = 0,i;
for ( i=1; i<=n; ++i )
if ( s + v[i] <= vol )
s += v[i];
else
{s = v[i];
nr++;}
return nr;
}
int main()
{
int i;
f>>n>>k;
for ( i=1; i<=n; ++i )
{
f>>v[i];
sumaVol += v[i];
maxVol = max(v[i], maxVol);
}
for ( step = 1; step < sumaVol; step <<= 1 );
for ( i = step; step; step >>= 1 )
if ( i - step >= maxVol && drum(i-step) <= k)
i -= step;
g<<i;
}