Pagini recente » Autentificare | Cod sursa (job #2031968) | Cod sursa (job #624196) | Cod sursa (job #3316148)
#include <stdio.h>
#include <stdlib.h>
int v[1600];
int se_poate(int n,int k,int c){
int i,s = 0,j = 0;
for(i = 0;i < n;i++){
if(v[i] > c)
return 1;
else if(s + v[i] <= c)
s += v[i];
else{
s = v[i];
j++;
}
}
if(s > 0)
j++;
if(j > k)
return 1;
else
return 0;
}
int main()
{
FILE *fin, *fout;
int n,i,st,k,dr,m,rez;
fin=fopen("transport.in", "r");
fout=fopen("transport.out", "w");
fscanf(fin, "%d%d" ,&n,&k);
for(i = 0;i < n;i++)
fscanf(fin, "%d" ,&v[i]);
st=1;
dr=16000*16000;
rez=-1;
while(st <= dr){
m = (st + dr) / 2;
if(se_poate(n ,k ,m) == 1){
st = m + 1;
}else{
dr = m - 1;
rez = m;
}
}
fprintf(fout, "%d" ,rez);
fclose(fin);
fclose(fout);
return 0;
}