Pagini recente » Cod sursa (job #3181515) | Cod sursa (job #2945022) | Cod sursa (job #688692) | Cod sursa (job #2658284) | Cod sursa (job #340629)
Cod sursa(job #340629)
#include<stdio.h>
#define dim 16001
using namespace std;
int V[dim],N,K;
int gr(int n)
{ int sum, cont,i;
sum = 0; cont = 1;
for(i = 1; i <= N; i++)
{
sum += V[i];
if(sum == n) sum = 0, cont++;
else if(sum > n) sum = 0, cont++, i--;
}
return cont;
}
int cb(int in, int sf)
{ int mij,c;
mij = (in + sf)/2;
c = gr(mij);
if(in >= sf) return mij;
else if(c <= K) return cb(in, mij-1);
else return cb(mij+1, sf);
}
int main()
{int i,S,max, sol;
FILE *f = fopen("transport.in","r");
FILE *g = fopen("transport.out", "w");
fscanf(f, "%d%d", &N, &K);
S = max = 0;
for(i = 1; i <= N; i++)
{
fscanf(f, "%d", &V[i]);
S += V[i];
if(V[i] > max) max = V[i];
}
sol = cb(max, S);
fprintf(g,"%d\n", sol);
fclose(f);
fclose(g);
return 0;
}