Pagini recente » Cod sursa (job #3197086) | Cod sursa (job #2683120) | Clasament tema_3 | clasament-arhiva-educationala | Cod sursa (job #2664454)
#include <stdio.h>
#include <algorithm>
#include <string.h>
using namespace std;
int v[16001];
int n, k;
bool check(int x){
int s=0, k2 = k;
for (int i=0; i<n; i++){
if (s + v[i] > x){
k2--;
s = v[i];
}
else s += v[i];
//printf("%d %d %d\n", v[i], s, k2);
}
if (k2 <= 0)
return false;
else return true;
}
int main()
{
FILE * fin = fopen("transport.in", "r");
FILE * fout = fopen("transport.out", "w");
fscanf(fin, "%d %d", &n, &k);
for (int i=0; i<n; i++)
fscanf(fin, "%d", &v[i]);
int cmax = 0, cmin = v[0];
for (int i=0; i<n; i++){
cmax += v[i];
cmin = (v[i] > cmin) ? v[i] : cmin;
}
while (cmin < cmax){
int avg = (cmin + cmax) / 2;
if (check(avg)){
cmax = avg;
}
else {
cmin = avg + 1;
}
//printf("%d %d %d\n", cmin, cmax, avg);
}
fprintf(fout, "%d", cmin);
fclose(fin);
fclose(fout);
}
//printf("%d %d", start, 4);