Pagini recente » Cod sursa (job #651453) | Cod sursa (job #2925671) | Cod sursa (job #162780) | Cod sursa (job #1243720) | Cod sursa (job #2062841)
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
const int N = 16005;
int n, k;
int v[N];
bool verificare (int cap)
{
int s=0,nr=0,i;
for(i=1; i<=n; i++)
{
if(s+v[i]<=cap)s=s+v[i];
else{nr++;
s=v[i];}
}
nr++;
if(nr<=k)
return true;
else return false;
}
int main()
{
in >> n >> k;
int inc = 0, sf = 0;
for(int i = 1; i <= n; i++)
{
in >> v[i];
sf += v[i];
if(v[i] > inc)
inc = v[i];
}
int mij;
while(inc < sf)
{
mij = (inc + sf)/2;
if(verificare(mij) == true) sf = mij;
else inc = mij + 1;
}
out << sf;
return 0;
}