Pagini recente » Cod sursa (job #2407013) | Cod sursa (job #1502539) | Cod sursa (job #209151) | Cod sursa (job #2527784) | Cod sursa (job #370600)
Cod sursa(job #370600)
#include<fstream.h>
int n,s,k,i,fin,p,a[16000];
int fct(int x)
{
p=0;
i=1;
s=0;
fin=0;
while(i<=n&!fin)
{
while(s+a[i]<=x&&!fin){s+=a[i];if(i<n)i++;else fin=1;}
p++;s=0;
}
if(p>k)return 0;
else return 1;
}
int main()
{
int x=0,l,r,m;
ifstream f("transport.in");
ofstream g("transport.out");
f>>n>>k;
for(i=1;i<=n;i++){f>>a[i];if(a[i]>x)x=a[i];}
if(n<200)
{
while(!fct(x))x++;
g<<x;
}
else
{
while(!fct(x))x<<=1;
l=(x>>1)+1;r=x;
while(l<r)
{
m=l+((r-l)>>1);
if(!fct(m))l=m+1;
else r=m-1;
}
if(!fct(r)){while(!fct(r))r++;g<<r;}
else {while(fct(r))r--;g<<r+1;}
}
return 0;
}