Pagini recente » Cod sursa (job #196453) | Cod sursa (job #2564031) | Cod sursa (job #177119) | Cod sursa (job #3197649) | Cod sursa (job #340472)
Cod sursa(job #340472)
#include<iostream>
using namespace std;
int n,s,kk,k,i,v[16001],maxim=0,jum ;
int m(int max)
{ s=0;kk=0;
for(i=1;i<=n;i++)
{
s=s+v[i];
if(s>max) {kk++;i--; s=0;}
else if(s==max)
{s=0; kk++;}
}
kk++;
return kk;
}
int caut(int li, int ls)
{
jum = ( li + ls ) / 2;
while(li < ls)
{
if( m(jum) > k ) li = jum + 1;
else ls = jum;
jum = ( li + ls ) / 2;
}
return 0;
}
int main()
{
int suma=0;
FILE *f=fopen("transport.in","r"), *g=fopen("transport.out","w");
fscanf(f,"%d%d",&n,&k);
for(i=1;i<=n;i++)
{fscanf(f,"%d",&v[i]);
if(v[i]>maxim) maxim=v[i];
suma+=v[i];}
caut(maxim,suma);
fprintf(g,"%d\n",jum);
fclose(f);
fclose(g);
return 0;}