Cod sursa(job #1708603)
Utilizator | Data | 27 mai 2016 15:18:41 | |
---|---|---|---|
Problema | Transport | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.7 kb |
#include <cstdio>
int v[16005], n, k;
using namespace std;
inline int volum( int l )
{
int i, j=1, s=0;
for( i=1;i<=n;i++ )
if( s+v[i]<=l )
s+=v[i];
else
if( v[i]<=l )
{
s=v[i];
j++;
}
else
return 1;
return j>k;
}
int main()
{
freopen( "transport.in", "r", stdin );
freopen( "transport.out", "w", stdout );
int i, pas;
scanf( "%d%d", &n, &k );
for( i=1;i<=n;i++ )
scanf( "%d", &v[i] );
pas=1<<30;
i=0;
while( pas!=0 )
{
if( volum(i+pas) )
i+=pas;
pas/=2;
}
printf( "%d", i+1 );
return 0;
}