Pagini recente » Cod sursa (job #30344) | Cod sursa (job #3179569) | Cod sursa (job #1484936) | Cod sursa (job #2142528) | Cod sursa (job #1706917)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
const int N = 16003;
int n, k, st[N], nrmax, sum[N];
bool sepoate( int cap )
{
int i, c = cap, nr = 1;
for ( i = 1; i <= n; i++ )
{
if ( st[i] > c )
{
c = cap;
nr++;
}
if ( st[i] > c )
return false;
if ( nr > k )
return false;
c -= st[i];
}
return true;
}
int cb()
{
int i = 0, pas = 1<<30;
while ( pas != 0 )
{
if ( !sepoate(i+pas) )
i+=pas;
pas/=2;
}
return 1+i;
}
int main()
{
int i, x;
in >> n >> k;
for ( i = 1; i <= n; i++ )
in >> st[i];
out << cb();
return 0;
}