Pagini recente » Cod sursa (job #3127797) | Cod sursa (job #1602017) | Borderou de evaluare (job #1567174) | Cod sursa (job #14208) | Cod sursa (job #798238)
Cod sursa(job #798238)
#include <iostream>
#include <fstream>
using namespace std;
int N,k;
int Max;
int suma;
int st[16000];
ifstream f("transport.in");
ofstream g("transport.out");
int check(int val)
{
int i = 0;
int x = 0;
int s = 0;
while(i <= N) {
if(s + st[i] <= val) {
s+= st[i];
} else {
s = st[i];
x++;
}
i++;
}
if(x < k)
return 1;
return 0;
}
int caut_bin(int li, int ls)
{
if(li == ls) {
if(check(ls))
return ls;
//else
//return ls+1;
}
int m = (li+ls)/2;
if(check(m)) {
return caut_bin(li, m);
} else {
return caut_bin(m+1, ls);
}
}
int main()
{
int i;
f>>N;
f>>k;
for(i = 0 ; i < N; i++) {
f>>st[i];
if(st[i] > Max) {
Max = st[i];
}
suma += st[i];
}
g<<caut_bin(Max, suma);
}