Pagini recente » Cod sursa (job #3139234) | Cod sursa (job #1066384) | Cod sursa (job #64424) | Cod sursa (job #1961195) | Cod sursa (job #1005272)
#include <fstream>
#include <vector>
#include <algorithm>
#define Nmax 16099
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int n,k,v[Nmax],Max;
long long S,sol=999999999999;
int main()
{
f>>n>>k;
for(int i=1;i<=n;i++)f>>v[i],Max=max(Max,v[i]),S+=v[i];
//,S[i]=S[i-1]+v[i],g<<S[i]<<' '; g<<'\n';
int left=Max,right=S;
while(left<=right)
{
int middle=(left+right)/2;
int t=1,sum=0;
for(int i=1;i<=n;i++)
if(sum+v[i]<=middle)sum+=v[i];
else ++t,sum=v[i];
if(t<=k)
{
if(middle<sol)sol=middle;
right=middle-1;
}
else left=middle+1;
}
g<<sol<<'\n';
f.close();g.close();
return 0;
}