Pagini recente » Cod sursa (job #1238526) | Cod sursa (job #1514927) | Cod sursa (job #1876390) | Cod sursa (job #1001850) | Cod sursa (job #1550495)
#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 i=1,nr = 0,s;
while(i<=n)
{
s = 0;
while(i<=n && s + v[i] <= m)
{
s = s + v[i];
i++;
}
nr++;
}
if(nr>k)
return 0;
return 1;
}
int main()
{
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
l = m-1;
}
if(verificare(f))
cout<<f;
else
cout<<f+1;
h.close();
g.close();
}