Pagini recente » Cod sursa (job #1586026) | Cod sursa (job #1565101) | Cod sursa (job #587721) | Cod sursa (job #2681547) | Cod sursa (job #3191857)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int x[500001];
int vf(int x[],long long a,int t,int m)
{
long long cnt=0,sum=0;
for (int i=1; i<=m; i++)
{
sum=sum+x[i];
if (sum+x[i+1]>a)
{
cnt++;
sum=0;
}
else if (i==m)
cnt++;
}
if (cnt>t)
return 0;
return 1;
}
int main()
{
int maxi=0,n,k,tn;
long long s=0;
fin>>n>>k;
for (int i=1; i<=n; i++)
{
fin>>x[i];
if (x[i]>maxi)
maxi=x[i];
s=s+x[i];
}
long long st=maxi,dr=s;
while (st<=dr)
{
long long mij=(st+dr)/2;
if (vf(x,mij,k,n)==1)
{
tn=mij;
dr=mij-1;
}
else
st=mij+1;
}
fout<<tn;
return 0;
}