Pagini recente » Cod sursa (job #1023731) | Istoria paginii runda/stargold | Cod sursa (job #1081475) | Cod sursa (job #1737063) | Cod sursa (job #2081845)
#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;
cin>>n>>k;
int pas=1<<L;
int r=0;
for(int i=1; i<=n; ++i) cin>>v[i];
while(pas!=0)
{
if(sepoate(r+pas,k)==0 )
r+=pas;
pas/=2;
}
++r;
cout<<r;
return 0;
}