Pagini recente » Cod sursa (job #646444) | Cod sursa (job #2496642) | Cod sursa (job #2223588) | Cod sursa (job #1937633) | Cod sursa (job #2081846)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int v[16001];
int n;
const int L=27;
bool sepoate(int r, int k)
{
int e=0, cc=0;
for(int i=1; i<=n; ++i)
{
if(v[i]>cc)
{
++e;
cc=r;
}
if(v[i]>cc) return false;
if(e>k) return false;
cc-=v[i];
}
return true;
}
int main()
{
int k;
in>>n>>k;
int pas=1<<L;
int r=0;
for(int i=1; i<=n; ++i) in>>v[i];
while(pas!=0)
{
if(sepoate(r+pas,k)==0 )
r+=pas;
pas/=2;
}
++r;
out<<r;
return 0;
}