Pagini recente » Cod sursa (job #2483477) | Cod sursa (job #2482950) | Cod sursa (job #1832794) | Cod sursa (job #1821857) | Cod sursa (job #3316127)
#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=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);
st=1;
dr=1600*1600;
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;
}