Pagini recente » Cod sursa (job #3269853) | Cod sursa (job #643039) | Cod sursa (job #2330145) | Cod sursa (job #1429740) | Cod sursa (job #742419)
Cod sursa(job #742419)
#include<iostream>
#include<fstream>
using namespace std;
int v[16001],n,k;
inline int suma(int i)
{
if(i==0)
return 0;
else return v[i]+suma(i-1);
}
inline int camioane(int c)
{
int s,i,nr;
s=0;
nr=0;
for(i=1;i<=n;i++) {
if((s+v[i])<=c)
s=s+v[i];
else {
nr++;
s=v[i];
}
}
return nr+1;
}
inline int cautarebinara()
{
int p,q,min,nr,mij;
p=1;
q=suma(n);
min=2000000000;
while(p<=q) {
mij=(p+q)/2;
nr=camioane(mij);
if(nr>k)
p=mij+1;
else if(nr<=k) {
if(min>mij)
min=mij;
q=mij-1;
}
}
return min;
}
int main ()
{
int i;
ifstream f("transport.in");
ofstream g("transport.out");
f>>n>>k;
for(i=1;i<=n;i++)
f>>v[i];
f.close();
g<<cautarebinara();
g.close();
return 0;
}