Pagini recente » Cod sursa (job #1497380) | Cod sursa (job #2456567) | Cod sursa (job #265709) | Cod sursa (job #1249685) | Cod sursa (job #3322207)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16005];
int main()
{
int n, k, smin = 0, smax = 0, dimensiune;
fin >> n >> k;
for(int i = 1; i <= n; i ++){
fin >> v[i];
if(v[i] > smin)
smin = v[i];
smax = smax + v[i];
}
int st, dr, mij, k1;
st = smin;
dr = smax;
dimensiune = dr;
while(st <= dr){
k1 = 0;
mij = (st + dr)/2;
int spartiala = 0;
for(int i = 1; i <= n; i ++){
spartiala = spartiala + v[i];
if(spartiala > mij){
k1 ++;
spartiala = v[i];
}
}
k1 ++;
if(k1 > k)
st = mij + 1;
else{
if(dimensiune > mij)
dimensiune = mij;
dr = mij - 1;
}
}
fout << dimensiune;
return 0;
}