Pagini recente » Cod sursa (job #1697502) | Cod sursa (job #2515629) | Cod sursa (job #2169505) | Cod sursa (job #2949018) | Cod sursa (job #2080218)
#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)
{
m=(st+dr)/2;
if(verific(m)==0)caut(st,m-1,m);
}
int main()
{
int i,ok,s=0,maxx=0,tr,m;
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,m);
while(verific(m))--m;
g<<m+1;
return 0;
}