Pagini recente » Cod sursa (job #2179437) | Cod sursa (job #3123283) | Cod sursa (job #964188) | Cod sursa (job #1807090) | Cod sursa (job #2408132)
#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;
int trans (int C)
{
int nrd=1, c=0;
for (int i=1; i<=N; i++)
{
c+=nr[i];
if (c>C)
{
c=nr[i];
nrd++;
}
}
return nrd;
}
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 && trans (mijl)!=K)
{
q=trans (mijl);
if (q<K)
{
dr=mijl-1;
mijl=(st+dr)>>1;
}
else
{
st=mijl+1;
mijl=(st+dr)>>1;
}
}
if (trans (mijl)==K)
{
for (i=mijl-1; i>=1 && trans (i)==K; i--);
i++;
fprintf (g, "%d\n", i);
}
else
{
q=trans (st);
for (i=st-1; i>=1 && trans (i)==q; i--);
i++;
fprintf (g, "%d\n", i);
}
fclose (f);
fclose (g);
return 0;
}