Pagini recente » Cod sursa (job #1652643) | Cod sursa (job #1113643) | Cod sursa (job #1125320) | Cod sursa (job #1544148) | Cod sursa (job #1799144)
//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, minim, maxim;
long long verificare(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;
while(left < right) {
middle = (left + right)/2;
if(verificare(middle)) right = middle; //caut in stanga
else left = middle + 1; //caut in dreapta
}
return left;
}
int main()
{
fin>>N>>K;
minim = -1;
maxim = 0;
for(i = 1 ; i <= N ; i++) {
fin>>v[i];
maxim += v[i];
if(minim < v[i])
minim = v[i];
}
fout<<cautareBinara(minim, maxim);
fin.close();
fout.close();
return 0;
}