Pagini recente » Cod sursa (job #3262794) | Cod sursa (job #1097827) | Cod sursa (job #1006995) | Cod sursa (job #3298498) | Cod sursa (job #3296107)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int n, k, saltele[16002], capacitate;
int main()
{
cin >> n >> k;
for(int i=1; i<=n; ++i)
cin >> saltele[i];
int st = 1, dr = 16000;
while(st <= dr)
{
int mij = (st + dr) / 2;
int suma = 0, ok = 0, transporturi = 0;
for(int i=1; i<=n; ++i)
{
if(saltele[i] <= mij && (suma+saltele[i]) <= mij)
suma = suma + saltele[i];
if((suma + saltele[i+1]) > mij)
{
suma = 0;
transporturi++;
}
}
if(suma != 0)
transporturi++;
if(transporturi > k)
st = mij + 1;
else{
dr = mij - 1;
capacitate = mij;
}
}
cout << capacitate;
return 0;
}