Pagini recente » Cod sursa (job #874912) | Profil Angel | Cod sursa (job #2493531) | Cod sursa (job #3296554) | Cod sursa (job #3296721)
#include <bits/stdc++.h>
#include<fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,c,v[16005];
//n=nr saltele; k=max transporturi; v=volumuri; c=max capacitate, cerinta
int i, vmax, vcurent;
int main()
{
fin>>n>>k;
for(i=1;i<=n;i++){
fin>>v[i];
vcurent+=v[i];
if(v[i]>vmax)
vmax=v[i];}
int st=vmax,dr=vcurent;
while(st<=dr)
{
int mij=(st+dr)/2;
int cate=0;
vcurent=0;
for(i=1;i<=n;i++)
{
if(v[i]<=mij && (vcurent+v[i])<=mij)
{
vcurent+=v[i];
}
if((vcurent+v[i+1])>mij)
{
vcurent=0;
cate++;
}
}
if(vcurent!=0)
cate++;
if(cate>k)
st=mij+1;
else{
dr=mij-1;
c=mij;
}
}
fout<<c;
return 0;
}