Pagini recente » Cod sursa (job #1781552) | Cod sursa (job #335008) | Cod sursa (job #1736066) | Cod sursa (job #1589938) | Cod sursa (job #1521750)
#include <iostream>
#include <fstream>
#define Nmax 16010
using namespace std;
int s, k, n, v[Nmax], c = Nmax*Nmax;
int ok(int maxCapacity)
{
int nrTransporturi = 1, currentMass = 0;
for(int i = 0; i < n; ++i)
{
if(v[i] > maxCapacity)
return 0;
if(currentMass + v[i] > maxCapacity)
{
++nrTransporturi;
currentMass = v[i];
}
else
{
currentMass+= v[i];
}
if(nrTransporturi > k)
return 0;
}
return 1;
}
int solve(int st, int dr)
{
if(st == dr)
return st;
int mij = (st + dr) / 2;
if(ok(mij))
return solve(st, mij);
return solve(mij + 1, dr);
}
int main()
{
fstream f("transport.in", ios::in);
fstream g("transport.out", ios::out);
f>>n>>k;
for(int i = 0; i < n; ++i)
{
f>>v[i];
s+= v[i];
}
g<<solve(s/k, s/k + Nmax);
return 0;
}