Pagini recente » Cod sursa (job #2149312) | Cod sursa (job #1199236) | Cod sursa (job #614648) | Cod sursa (job #2999188) | Cod sursa (job #2408159)
#include <cstdio>
#include <algorithm>
#define A 16000
using namespace std;
FILE *f, *g;
int nr[A+1], i, maxi, S, st, dr, mijl, mq, N, K, q, poz;
bool trans (int C)
{
int nrd=0, c;
for (int i=1; i<=N; i++)
{
c=nr[i];
i++;
while (c+nr[i]<=C && i<=N)
{
c+=nr[i];
i++;
}
i--;
nrd++;
}
return nrd<=K;
}
int main ()
{
f=fopen ("transport.in", "r");
g=fopen ("transport.out", "w");
fscanf (f, "%d%d", &N, &K);
for (i=1; i<=N; i++)
{
fscanf (f, "%d", &nr[i]);
maxi=max (maxi, nr[i]);
S+=nr[i];
}
st=maxi;
dr=S;
mijl=(st+dr)>>1;
while (st<=dr)
{
if (trans (mijl)==1)
{
poz=mijl;
dr=mijl-1;
}
else
st=mijl+1;
mijl=(st+dr)>>1;
}
fprintf (g, "%d\n", poz);
fclose (f);
fclose (g);
return 0;
}