Pagini recente » Istoria paginii runda/summer_camp_4 | Cod sursa (job #1744713) | Cod sursa (job #2457680) | Cod sursa (job #1241503) | 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;
}