Pagini recente » Cod sursa (job #990974) | Cod sursa (job #479058) | Cod sursa (job #556358) | Cod sursa (job #860988) | Cod sursa (job #967103)
Cod sursa(job #967103)
#include <cstdio>
int v[16001];
int n,k;
bool tr(int c){
int s=0,t=0;
for ( int i=1;i<=n;++i ){
if ( v[i]>c )return 0;
if ( s+v[i]>=c ){s=0;++t;}
s+=v[i];
}
if ( t<=k )return 1;
return 0;
}
int main()
{
FILE*f=fopen("transport.in","r");
FILE*h=fopen("transport.out","w");
int s=0;
fscanf(f,"%d%d",&n,&k);
for ( int i=1;i<=n;++i ){
fscanf(f,"%d",&v[i]);
s+=v[i];
}
int p=0;
for ( int pas=1<<26;pas;pas/=2 ){
if ( p+pas>s )continue;
if ( !tr(p+pas) )p+=pas;
}
for ( int pas=1;pas<=s;pas*=2 )
if ( tr(p+pas)&&p+pas<=s ){p+=pas;break;}
fprintf(h,"%d",p);
return 0;
}