Pagini recente » Cod sursa (job #2237777) | Cod sursa (job #1009185)
#include<cstdio>
using namespace std;
int s,n,k,k_fals,i,x,last,med,mx;
bool bn;
int v[16000];
void verif()
{
s=0;k_fals=1;bn=0;
for (i=0;i<n;++i)
{
if (s+v[i]>med)
{
++k_fals;
s=0;
}
s=s+v[i];
}
if (k_fals<=k)
bn=1;
}
void bs_left(int st, int dr){
while(dr>st){
med = (st + dr) / 2;
verif();
if(bn){
last=med;
dr=med;
}
else{
st=med+1;
}
}
}
int main()
{
FILE *fin=fopen("transport.in","r"),*fout=fopen("transport.out","w");
fscanf(fin,"%d%d",&n,&k);
s=0;mx=0;
for (i=0;i<n;++i)
{
fscanf(fin,"%d",&v[i]);
if (mx<v[i])
mx=v[i];
s+=v[i];
}
bs_left(mx,s);
fprintf(fout,"%d\n",last);
fclose(fin);
fclose(fout);
return 0;
}