Pagini recente » Cod sursa (job #2368421) | Cod sursa (job #2971441) | Cod sursa (job #18140) | Cod sursa (job #299909) | Cod sursa (job #2185351)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16010],sum,g,n;
int cautbin(int mx){
int st = 1,dr = sum;
int sum2=0,mij,i,counter=0,now=dr;
while(st <= dr){
mij = (st+dr)/2;
sum2=0;
counter=0;
if(mij < mx){
st=mij+1;
continue;
}
for(i = 1; i <= n; i++){
if(sum2+v[i] < mij) sum2 += v[i];
else if(sum2+v[i] == mij) counter++,sum2=0;
else i--,counter++,sum2=0;
}
if(sum2 && sum2 < mij) counter++,sum2=0;
if(counter > g) st = mij+1;
else{
dr = mij-1;
now = mij;
}
}
return now;
}
int main()
{
fin>>n>>g;
int i,mx=0,nr;
for(i = 1; i <= n; i++){
fin>>nr;
v[i] = nr;
sum+=nr;
mx = max(mx,nr);
}
fout<<cautbin(mx);
}