Pagini recente » Cod sursa (job #3169270) | Cod sursa (job #3238634) | Cod sursa (job #1692127) | Cod sursa (job #2441960) | Cod sursa (job #1042463)
#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++;
j++;
}
if(x<v[j]) return k+1;
else return i;
}
int cautare(int st, int dr)
{
int m,c;
while(st!=dr)
{
m=(st+dr)/2;
c=corect(m);
if(c==k) return m;
else if(c<k) dr=m;
else st=m+1;
}
c=corect(m);
if(c) return st;
}
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;
}