Pagini recente » Cod sursa (job #3170746) | Cod sursa (job #1692641) | Cod sursa (job #1719264) | Cod sursa (job #165598) | Cod sursa (job #2080223)
#include<fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int k,v[20000],n;
int verific(int x)
{
int tr=1,m=v[1],i;
for(i=2;i<=n;++i)
{if(m+v[i]>x){++tr;m=v[i];}
else m+=v[i];
if(tr>k)return 0;}
return 1;
}
void caut(int st,int dr)
{
int m=(st+dr)/2;
if(verific(m)==0)caut(m+1,dr);
else if(verific(m-1))caut(st,m-1);
else g<<m;
}
int main()
{
int i,s=0,maxx=0;
f>>n>>k;
for(i=1;i<=n;++i)
{
f>>v[i];
if(v[i]>maxx)maxx=v[i];
s+=v[i];
}
caut(maxx,s);
return 0;
}