Pagini recente » Cod sursa (job #3242891) | Cod sursa (job #1076943) | Cod sursa (job #2690930) | Cod sursa (job #2686490) | Cod sursa (job #1799140)
//Transport
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
#define NMAX 16002
long long N, K;
long long v[NMAX];
long long i, nr, nrmax = -1;
long long nrTransporturi(long long x) {
long long contor = 1, Sum = 0;
for(i = 1 ; i <= N ; i++) {
if(v[i] > x) return 0;
Sum += v[i];
if(Sum > x) {
Sum = v[i];
contor++;
}
}
if(contor > K) return 0;
return 1;
}
long long cautareBinara(long long left, long long right) {
long long middle, decide;
while(left < right) {
middle = (left + right)/2;
decide = nrTransporturi(middle);
if(decide == 0) left = middle + 1; //caut in dreapta
else right = middle; //caut in stanga
}
return left;
}
int main()
{
fin>>N>>K;
for(i = 1 ; i <= N ; i++) {
fin>>v[i];
nrmax += v[i];
if(nrmax < v[i])
nrmax = v[i];
}
fout<<cautareBinara(nrmax, NMAX);
fin.close();
fout.close();
return 0;
}