Pagini recente » Cod sursa (job #708794) | Cod sursa (job #2541492) | Cod sursa (job #848720) | Cod sursa (job #226821) | Cod sursa (job #1020580)
#include<iostream>
#include<fstream>
using namespace std;
int v[16001],i,k,c,n;
int li,ls,sum,m;
ifstream f("transport.in");
ofstream g("transport.out");
int capac(int m,int k)
{
int s=v[1],i=2,nr=0;
while (i<=n && nr<k)
{
if(s+v[i]>m) {s=v[i]; nr++;}
else s=s+v[i];
i++;
}
if(nr<k) return 1;
else return 0;
}
int main()
{
f>>n>>k;
for(i=1;i<=n;i++)
{f>>v[i];
sum=sum+v[i];
if(v[i]>li) li=v[i];}
ls=sum;
while(li<=ls)
{cout<<li<<" "<<ls<<" "<<m<<endl;
m=(li+ls)/2;
if(capac(m,k)) ls=m-1;
else li=m+1;
}
g<<li;
}