Pagini recente » Cod sursa (job #2858571) | Cod sursa (job #2362906) | Cod sursa (job #2687529) | Cod sursa (job #3038863) | Cod sursa (job #1550487)
#include <iostream>
#include <fstream>
using namespace std;
ifstream h("transport.in");
ofstream g("transport.out");
int f,l,k,n,v[20000],m;
int verificare(int m)
{
int nr = 0,s = 0;
for(int i=1;i<=n;i++)
{
if(v[i]>m || nr>k)
return 0;
else if(s+v[i]<=m)
s+=v[i];
else
{
s = 0;
nr ++;
}
}
return 1;
}
int main()
{
int rasp;
h>>n>>k;
for(int i = 1;i<=n;i++)
{
h>>v[i];
l+=v[i];
if(v[i]>f)
f = v[i];
}
while(f<=l)
{
m = (f+l)/2;
if(verificare(m) == 0)
f = m+1;
else
{
rasp = m;
l = m-1;
}
}
g<<rasp;
h.close();
g.close();
}