Pagini recente » Cod sursa (job #920322) | Cod sursa (job #3200127) | Cod sursa (job #1110147) | Cod sursa (job #635179) | Cod sursa (job #2527577)
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int v[16001];
int k;
int n;
bool ok(int nrC)
{
int op=0, i,s=0;
if(nrC<v[1])
return false;
for(i=0; i<=n; i++)
{
if(op!=0)
i--;
while(s+v[i+1]<=nrC){
i++;
s+=v[i];
}
op++;
s=0;
}
if(op<=k)
{
return true;
}
else
return false;
}
int main()
{
FILE *fin, *fout;
fin=fopen("transport.in", "r");
fout=fopen("transport.out", "w");
int i;
fscanf(fin, "%d%d", &n, &k);
for(i=1; i<=n; i++)
{
fscanf(fin, "%d", &v[i]);
}
int st=1, dr=16000, mij, elem=0;
while(st<=dr)
{
mij=(st+dr)/2;
if(ok(mij)==true)
{
elem=mij;
dr=mij-1;
}
else
{
st=mij+1;
}
}
fprintf(fout, "%d", elem);
fclose(fin);
fclose(fout);
return 0;
}