Pagini recente » Cod sursa (job #275673) | Cod sursa (job #1306145) | Cod sursa (job #949856) | Cod sursa (job #1568938) | Cod sursa (job #483767)
Cod sursa(job #483767)
#include <fstream>
#include <windows.h>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int N,K,V[16005];
inline bool verifica(int val)
{
int k=K,s=0;
for(int i=1;i<=N;)
{
if(val<V[i])return 0;
while(s+V[i]<=val&&i<=N)
s+=V[i++];
//out<<s<<' '<<i<<'\n';
s=0;
k--;
}
if(k>=0)return 1;
return 0;
}
int main()
{
int i,step=1,S=0,st,dr,vmax=-1,m;
in>>N>>K;
for(i=1;i<=N;i++)
{
in>>V[i],S+=V[i];if(V[i]>vmax)vmax=V[i];}
//caut intra vmax si S;
st = vmax,dr=S;
while(st<=dr)
{
m=(st+dr)/2;
if(verifica(m))
dr=m-1;
else st=m+1;
}
out<<st;
return 0;
}