Pagini recente » Cod sursa (job #1708750) | Cod sursa (job #2176457) | Cod sursa (job #2087586) | Cod sursa (job #3264514) | Cod sursa (job #2072109)
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
using namespace std;
int v[16000];
char trc[16000];
int verif(int rsp, int k, int n){
int s, st=0, dr=n-1;
while(k>0 && dr>st){
if(v[dr]<=rsp){
s=v[dr];
while(s+v[st]<=rsp && st<dr){
s+=v[st];
st++;
}
//printf("%d, %d\n", st, dr);
dr--;
}
k--;
}
//printf("\n");
if(dr>st)
return 0;
//printf("\t%d %d: %d!!\n", st, dr, rsp);
return 1;
}
int cautbinrasp(int n, int k){
int poz=0, pas;
pas=1<<27;
while(pas!=0){
if(verif(poz+pas, k, n)==0)
poz+=pas;
pas/=2;
}
return poz;
}
int main(){
FILE *fin, *fout;
int n, k, i;
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]);
fprintf(fout, "%d", cautbinrasp(n, k)+1);
fclose(fin);
fclose(fout);
return 0;
}