Pagini recente » Cod sursa (job #644086) | Cod sursa (job #2321746) | Cod sursa (job #2300271) | Cod sursa (job #234576) | Cod sursa (job #3310482)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[160001];
bool simulare(int v[], int n, int k, int vol)
{
int i, s = 0, cnt = 1;
for(i = 1;i <= n; i++)
{
if(s + v[i] <= vol)
s += v[i];
else
{
s = v[i];
cnt++;
}
}
if(cnt > k)
return 0;
return 1;
}
int main()
{
int n, k, i, st = 0, dr = 16000*17000, x, m, val;
cin>>n>>k;
for(i = 1; i <= n; i++)
{
cin>>v[i];
if(v[i]>st)
st = v[i];
}
while(st<=dr)
{
m = (st + dr) / 2;
if(simulare(v, n, k, m)==1)
{
val = m;
dr=m-1;
}
else
st=m+1;
}
cout<<val;
return 0;
}