Pagini recente » Cod sursa (job #2644690) | Cod sursa (job #994363) | Cod sursa (job #2516859) | Cod sursa (job #832621) | Cod sursa (job #2091781)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,v[16001],k,mn;
int verif(int c)
{
int i,s=0,nr=0;
for(i=1;i<=n;i++)
{
if (c<v[i]) return 0;
if(s+v[i]<=c)
s+=v[i];
else {nr++;s=v[i];}
}
if ((s<=c)&&(nr+1<=k)) return 1;
else return 0;
}
void caut(int p,int u)
{
if(p==u)
{if (verif(p))
mn=p;
}
else if (p<u)
{
int mij;
mij=(p+u)/2;
if (verif(mij)) {mn=mij;caut(p,mij-1);}
else caut(mij+1,u);
}
}
int main()
{ int i,s=0;
f>>n>>k;
for(i=1;i<=n;i++)
{f>>v[i];
s+=v[i];}
caut(1,s);
g<<mn;
return 0;
}