Pagini recente » Cod sursa (job #378426) | Cod sursa (job #1369795) | Cod sursa (job #2901150) | Cod sursa (job #65809) | Cod sursa (job #64728)
Cod sursa(job #64728)
using namespace std;
#define MAX_N 16005
#include <stdio.h>
FILE *fin=fopen("transport.in","r"),
*fout=fopen("transport.out","w");
int a[MAX_N];
int n,k;
int check( int val )
{
int i=1,ct=0,c=0;
while (i<=n)
{
while (c+a[i]<=val)
{
c+=a[i]; i++;
if (i>n) break;
}
ct++;
if (a[i]>val) break;
if (i==n+1) break;
c=0;
}
if (ct<=k && i>n) return 1;
return 0;
}
void solve(void)
{
int mj,li=1,lf=0,i;
for (i=1; i<=n; i++) lf+=a[i];
while (li<=lf)
{
mj=(li+lf)/2;
if (check(mj)) lf=mj-1;
else li=mj+1;
}
fprintf(fout,"%d\n",mj);
}
int main()
{
fscanf(fin,"%d %d",&n,&k);
for (int i=1; i<=n; i++)
fscanf(fin,"%d\n",a+i);
solve();
fclose(fin);
fclose(fout);
return 0;
}