Pagini recente » Cod sursa (job #1797914) | Cod sursa (job #129425) | Cod sursa (job #2783273) | Cod sursa (job #1181646) | Cod sursa (job #1714139)
#include <iostream>
#include <fstream>
#define nmax 16001
#define nada false
#define ggwp true
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int n,k,v[nmax],i,maxx,x,act;
bool verif( int h )
{int sum=0;
x=0;
for(i=1;i<=n;i++)
{
if(sum+v[i]<=h )
sum+=v[i];
else{x++;sum = v[i];}
}
if(++x<=k)return ggwp;
return nada;
}
int cbin( int st,int dr )
{
int answ=0,m ;
while(st<=dr)
{
m=st+(dr-st)/2;
if(verif(m))
{answ=m;
dr=m-1;
}
else st = m + 1;}
return answ;
}
int main()
{fin>>n>>k;
for(i=1;i<=n;i++)
{fin>>v[i];if(maxx<v[i])maxx=v[i];}
for(i=1;i<=n;i++)
{if(act+v[i]<=maxx)act+=v[i];
else {x++;act=v[i];}
}
if(++x<=k)fout<<maxx;
else
{act=0;
for(i=1;i<=n;i++)act+=v[i];
fout<<cbin(maxx,act);
}
return 0;
}