Pagini recente » Cod sursa (job #1043900) | Cod sursa (job #178175) | Cod sursa (job #292632) | Cod sursa (job #641018) | Cod sursa (job #1799134)
//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) {
if(left < right) {
long long middle = (left + right)/2, x;
x = nrTransporturi(middle);
if(x == 0) return cautareBinara(middle + 1, right);
else return cautareBinara(left, middle);
}
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;
}