Pagini recente » Cod sursa (job #2392936) | Cod sursa (job #1608106) | Cod sursa (job #1012317) | Cod sursa (job #2320174) | Cod sursa (job #2298657)
#include <iostream>
#include<stdio.h>
int v[16001];
using namespace std;
int main(){
FILE *fin, *fout;
int dr, st, mij, ct, cnt, s, cm, i, k, n, poz, max;
fin=fopen("transport.in", "r");
fout=fopen("transport.out", "w");
fscanf( fin, "%d %d", &n, &k);
max=0;
for(i=1; i<=n; i++) {
fscanf( fin, "%d", &v[i]);
if(v[i]>max) {
max=v[i];
}
}
st=1;
dr=max*n;
while(st<=dr) {
mij=(st+dr)/2;
cm=mij;
cnt=0;
for(i=1; i<=k; i++) {
s=0;
st=1;
if(cnt<n) {
while(st==1 && cnt<n) {
cnt++;
s=s+v[cnt];
if(s>cm) {
s=s-v[cnt];
cnt--;
st=0;
}
}
}
}
if(cnt==n) {
poz=mij;
dr=mij-1;
}
else {
st=mij+1;
}
}
fprintf( fout, "%d", poz);
fclose( fin );
fclose( fout );
return 0;
}