Pagini recente » Cod sursa (job #1207469) | Cod sursa (job #1668582) | Cod sursa (job #592272) | Cod sursa (job #3269966) | Cod sursa (job #2437355)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16001];
int posib=0,n,k;
int verif(int mij)
{
posib=0;
int kk=0;
for(int i=1;i<=n;i++)
{
if(v[i]>mij){
posib=k+1;
return 0;
}
else
{
if(kk+v[i]>mij){
posib++;
if(v[i]<=mij)
kk=v[i];
else
{
posib=k+1;
return 0;
}
}
else
kk+=v[i];
if(posib>k)
return 0;
}
}
posib++;
return (posib<=k);
}
int main()
{
int c,i,j,suma=0,st=1,dr,last,minim=0,mij;
fin>>n>>k;
for(i=1;i<=n;i++)
{
fin>>v[i];
suma += v[i];
}
dr=suma;
last=(st+dr)/2;
while(st<dr)
{
mij=(st+dr)/2;
if(verif(mij)==1)
dr=mij;
else
st=mij+1;
}
fout<<st;
return 0;
}