Pagini recente » Cod sursa (job #684842) | Cod sursa (job #2775762) | Cod sursa (job #1427025) | Cod sursa (job #1115136) | Cod sursa (job #1028412)
#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 (vol[j]>volum)
{
tra=k+1;
break;
}
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
{
st=m+1;
}
}
g<<m;
return 0;
}