Pagini recente » Cod sursa (job #1447045) | Cod sursa (job #418061) | Cod sursa (job #1853854) | Cod sursa (job #3280915) | Cod sursa (job #1210409)
#include <fstream>
using namespace std;
int i,n,k,v[16002],maxim=-2000000000,s=0;
ifstream f("transport.in");
ofstream g("transport.out");
bool ok(int x)
{
int cont=0,suma=0;
for (i=1; i<=n; i++)
if (suma + v[i] <= x )
suma+=v[i];
else
{
suma=v[i]; cont++;
}
if (cont<k)
return 1;
else return 0;
}
int main ()
{
f>>n>>k;
for (i=1; i<=n; i++)
{
f>>v[i];
s+=v[i];
if (v[i]>=maxim) maxim=v[i];
}
int st=maxim,dr=s,med;
while (st<=dr)
{
med=(st+dr)/2;
if (ok(med)==1)
dr=med-1;
else
st=med+1;
}
g<<st;
return 0;
}