Pagini recente » Cod sursa (job #448648) | Cod sursa (job #1160985) | Cod sursa (job #2540414) | Cod sursa (job #898080) | Cod sursa (job #1028405)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n, i, st, dr, k, vol[16001], s, m, nr, sol;
int transport(int volum)
{
int j, tra=0, sum=0;
for(j=1; j<=n; j++)
{
if(sum + vol[j] <= volum)
sum += vol[j];
else
{
sum=vol[j];
tra++;
}
}
tra++;
return tra;
}
int main()
{
f>>n>>k;
for(i=1;i<=n;i++)
{
f>>vol[i];
s+=vol[i];
}
st=1;
dr=s;
while(st<=dr)
{
m=(st+dr)/2;
nr=transport(m);
if(nr<k)
{
dr=m-1;
sol=m;
}
else if(nr>k)
{
st=m+1;
sol=m;
}
}
g<<sol;
return 0;
}