Pagini recente » Cod sursa (job #972070) | Cod sursa (job #1412318) | Cod sursa (job #2701222) | Cod sursa (job #528512) | Cod sursa (job #2437342)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16001];
int s[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++;
if(posib>k)
return 0;
return 1;
}
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];
}
for(i=1;i<=n;i++)
{
s[i] += v[i]+s[i-1];
}
dr=suma;
last=(st+dr)/2;
while(st!=dr)
{
mij=(st+dr)/2;
if(verif(mij)==1)
last=min(last,mij);
if(posib>=k)
st=mij+1;
else
dr=mij-1;
}
fout<<last;
return 0;
}