Pagini recente » Cod sursa (job #208451) | Cod sursa (job #798113) | Cod sursa (job #2744660) | Cod sursa (job #1422627) | Cod sursa (job #1553972)
# include <fstream>
# include <limits>
using namespace std;
ifstream cin ( "transport.in" );
ofstream cout ( "transport.out" );
int n, a[16005], k;
bool verificare ( int c )
{
int p, s, i;
p = 1;
s = 0;
for ( i = 1; i <= n; i ++ )
{
s = s + a[i];
if ( s > c )
{
s = a[i];
p ++;
}
}
return ( p <= k );
}
int main ()
{
int left, right, i, mid, ok;
cin >> n >> k;
left = -2000000000;
right = 0;
for ( i = 1; i <= n; i ++ )
{
cin >> a[i];
left = max ( left, a[i] );
right = right + a[i];
}
while ( left <= right )
{
mid = ( left + right ) / 2;
ok = verificare ( mid );
if ( ok )
right = mid - 1;
else
left = mid + 1;
}
cout << left;
return 0;
}