Pagini recente » Cod sursa (job #3266783) | Cod sursa (job #2036588) | Cod sursa (job #2457351) | Cod sursa (job #166834) | Cod sursa (job #895503)
Cod sursa(job #895503)
#include <cstdio>
FILE *f=fopen("transport.in","r");
FILE *g=fopen("transport.out","w");
int n,k,v[16001];
int maxi(int v[16001],int &sum)
{
int i,max=-1;
for(i = 1; i <= n; i ++)
{
if(v[i]>max)
max=v[i];
sum+=v[i];
}
return max;
}
int okay(int x)
{
int times=1,i,semi=0;
for(i=1;i<=n;i++)
{
if(times+v[i]<x)
semi+=v[i];
else
{times++;semi=0;}
}
}
int cauta(int x1,int x2)
{
int li,lf,m;
li=x1;
lf=x2;
while(li<=lf)
{
m=(li+lf)/2;
if(okay(m))
lf=m-1;
else
li=m+1;
}
return m;
}
int main()
{
fscanf(f,"%d%d",&n,&k);
int i,x,sum=0,y;
for(i = 1; i <= n; i ++)
fscanf(f,"%d",&v[i]);
x = maxi(v,sum);
y=cauta(x,sum);
fprintf(g,"%d",y+1);
return 0;
}