Pagini recente » Cod sursa (job #1941738) | Cod sursa (job #821092) | Istoria paginii utilizator/emiliamariatatar13 | Cod sursa (job #1188764) | Cod sursa (job #1799136)
//Transport
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
#define NMAX 16001
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];
if(nrmax < v[i])
nrmax = v[i];
}
nr = cautareBinara(nrmax, NMAX);
fout<<nr;
fin.close();
fout.close();
return 0;
}