Pagini recente » Borderou de evaluare (job #2002261) | Cod sursa (job #2195221) | Borderou de evaluare (job #587072) | Cod sursa (job #3232998) | Cod sursa (job #1967223)
#include <stdio.h>
#include <iostream>
#define MAX 16000
#define MAX2 256000000
using namespace std;
int v[MAX];
int main()
{
FILE *fin, *fout;
int n, k, i, st, dr, mij, nrt, suma;
fin = fopen("transport.in", "r");
fout = fopen("transport.out", "w");
fscanf(fin, "%d%d", &n, &k);
for(i = 0; i < n; i++)fscanf(fin, "%d", &v[i]);
st = 1;
dr = MAX2;
while(st <= dr)
{
mij = (st + dr) / 2;
nrt = i = 0;
while(i < n)
{
suma = 0;
while(i < n && suma <= mij)
{
suma += v[i];
i++;
}
if(suma > mij)
{
i--;
suma -= v[i];
}
nrt++;
}
if(nrt <= k)dr = mij - 1;
else st = mij + 1;
}
fprintf(fout, "%d", mij);
fclose( fin );
fclose( fout );
return 0;
}