Pagini recente » Cod sursa (job #3272745) | Cod sursa (job #3208859) | Cod sursa (job #1359571) | Cod sursa (job #2786177) | Cod sursa (job #559937)
Cod sursa(job #559937)
#include<stdio.h>
FILE*fin,*fout;
long int v[20001],i,j,n,m,k,p,u,nr,c,min,max;
int main(){
fin=fopen("trans.in","r");
fout=fopen("trans.out","w");
fscanf(fin,"%ld %ld",&n,&k);
for(i=1;i<=n;i++){
fscanf(fin,"%ld",&v[i]);
v[i]=v[i]+v[i-1];
}
p=v[1];
u=v[n];
min=256000001;
while(p<=u){
m=(p+u)/2;
nr=0; c=0;
for(i=1;i<=n;i++){
while(v[i]-v[c]<=m&&i<=n){i++;}
nr++;
c=i-1;i--;
}
if(nr==k){max=m;u=m-1;
if(m<min){min=m;}
}
else if(nr>k){p=m+1;}
else {
u=m-1;
}
}
fprintf(fout,"%ld",min);
fclose(fin);
fclose(fout);
return 0;
}