Pagini recente » Cod sursa (job #731286) | Cod sursa (job #573545) | Cod sursa (job #2528155) | Cod sursa (job #1672036) | Cod sursa (job #438324)
Cod sursa(job #438324)
#include <stdio.h>
int v[16001];
int n, i, j, k;
int trans;
int Max, s;
int main ()
{
FILE *f = fopen ("transport.in","r");
FILE *g = fopen ("transport.out","w");
fscanf (f,"%d %d", &n, &k);
for (i=1; i<=n; ++i)
{
fscanf (f,"%d", &v[i]);
if (v[i] > Max)
Max = v[i];
}
fclose(f);
i = 1;
while (i <= n)
{
if (s + v[i] <= Max)
s += v[i];
else
{
s = 0;
trans ++;
continue;
}
i ++;
}
if (s)
trans ++;
if (trans <= k)
{
while (1)
{
Max --;
s = trans = 0;
i = 1;
while (i <= n)
{
if (v[i] > Max)
{
trans = 100;
break;
}
if (s + v[i] <= Max)
s += v[i];
else
{
s = 0;
trans ++;
continue;
}
i ++;
}
if (s)
trans ++;
if (trans > k)
{
fprintf (g,"%d",Max ++);
return 0;
}
}
}
else
{
while (1)
{
Max ++;
s = trans = 0;
i = 1;
while (i <= n)
{
if (s + v[i] <= Max)
s += v[i];
else
{
s = 0;
trans ++;
continue;
}
i ++;
}
if (s)
trans ++;
if (trans <= k)
{
fprintf (g,"%d",Max);
return 0;
}
}
}
fclose(g);
return 0;
}