Pagini recente » Cod sursa (job #3123212) | Cod sursa (job #2317456) | Cod sursa (job #896070) | Cod sursa (job #1269998) | Cod sursa (job #2972471)
#include <iostream>
#include<fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16001];
bool functie(int m,int k,int v[],int n)
{
int i,sum=0,nr=1;
for(i=1; i<=n; i++)
{
sum+=v[i];
if(sum>m)
{
nr++;
sum=v[i];
}
}
if(nr<=k)
return true;
else
return false;
}
int main()
{
int n,k,dr=256000001,ultim=-1,mid,maxn=-1;
fin>>n>>k;
for(int i=1; i<=n; i++)
{
fin>>v[i];
if(v[i]>maxn)
maxn=v[i];
}
int st=maxn;
while(st<=dr)
{
mid=(st+dr)/2;
if(functie(mid,k,v,n)==true)
{
dr=mid-1;
ultim=mid;
}
else
{
st=mid+1;
}
}
fout<<ultim;
}