Pagini recente » Borderou de evaluare (job #664694) | Borderou de evaluare (job #151041) | Rating Iulita Alpetri (iulitaalpetri) | Borderou de evaluare (job #2010718) | Cod sursa (job #1967234)
#include <stdio.h>
#include <iostream>
#define MAX 16000
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);
st = dr = 0;
for(i = 0; i < n; i++)
{
fscanf(fin, "%d", &v[i]);
if(st < v[i])st = v[i];
dr += v[i];
}
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;
}