Pagini recente » Cod sursa (job #1950713) | Cod sursa (job #1006121) | Cod sursa (job #401014) | Cod sursa (job #2680451) | Cod sursa (job #2699322)
#include <fstream>
#define NMAX 16000
using namespace std;
int n,v[NMAX+1],k;
int maxim=0,suma=0;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int calcNum(int val)
{
int nri=1,sum=0;
for(int i=1; i<=n; i++)
{
sum+=v[i];
if(sum>val)
{
sum=v[i];
nri++;
}
}
return nri;
}
int main()
{
fin>>n>>k;
for(int i=1; i<=n; i++)
{
fin>>v[i];
suma+=v[i];
if(v[i]>maxim)
{
maxim=v[i];
}
}
int st=maxim,dr=suma;
int sol=-1;
while(st<=dr)
{
int mij=(st+dr)/2;
int interv=calcNum(mij);
if(interv<=k)
{
//caut in stanga
sol=mij;
dr=mij-1;
}
else if(interv>k)
{
st=mij+1;
}
}
fout<<sol;
return 0;
}