Pagini recente » Cod sursa (job #2715121) | Cod sursa (job #314140) | Cod sursa (job #2520863) | Cod sursa (job #3275630) | Cod sursa (job #3038238)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k, i, v[16001];
int verif(int c)///verific daca este posibil cu
{///capacitatea c sa transport toate saltelele
/// in maxim k transporturi
int nr,s;
nr = 1;
s= 0;
for(i = 1; i <= n; i++)
{
if(s + v[i] <= c)
s=s + v[i];
else
{
nr++;
s = v[i];
}
}
return nr<=k;
}
int main()
{
int i,vm, st, dr, mij,cm;
fin >> n >> k;
vm=0;
for(i = 1; i <= n; i++)
{
fin >> v[i];
if(v[i]>vm)
vm=v[i];
}
///se cere capacitatea minima a camionului pentru a efectua maxim k transporturi
st = vm;///sa incapa si cea mai voluminoasa saltea
dr = 256001;///un singur transport
while(st <= dr)
{
mij = (dr + st) / 2;
if(verif(mij))
{
cm= mij;
dr = mij-1;
}
else
st = mij + 1;
}
fout << cm;
return 0;
}