Pagini recente » Cod sursa (job #1922470) | Cod sursa (job #570612) | Cod sursa (job #2661196) | Cod sursa (job #2191146) | Cod sursa (job #1042960)
#include<iostream>
#include<fstream>
using namespace std;
int v[16001],k,n;
int corect(int x)
{
int i=1,j=1,d=x;
while(j<=n&&x>=v[j])
{
d-=v[j];
if(d<0) d=x,i++;
else j++;
}
if(x<v[j]&&j<=n) return k+1;
return i;
}
int cautare(int st, int dr)
{
int m,c,d;
while(st!=dr)
{
m=(st+dr)/2;
c=corect(m);\
if(c==k) d=m;
if(c<=k) dr=m;
else st=m+1;
}
c=corect(m);
if(c) return st;
return d;
}
int main()
{
ifstream f("transport.in");
ofstream g("transport.out");
f>>n>>k;
int s=0;
for(int i=1;i<=n;i++) {f>>v[i];s+=v[i];};
g<<cautare(1,s);
f.close();g.close();
return 0;
}