Pagini recente » template/preoni-2008 | Cod sursa (job #757807) | Cod sursa (job #1139655) | Cod sursa (job #1124154) | Cod sursa (job #2619581)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16000],n,k;
//functie care verifica daca
int areLoc(int vol)
{
//ret 1 daca pot imparti vect in cel mult k secv fiecare secv avand suma <= C
int s = 0, i, cnt = 1;
for (i = 1; i <= n;i++)
{
if (v[i] > vol) return 0;
if (s + v[i] <= vol)
s += v[i];
else
{
cnt++;
s = v[i];
}
}
return (cnt <= k);
}
void cautare_binara()
{
int st=1,dr=256000000,copiest=1;
while(st<=dr)
{
int mij=(st+dr)/2;
//verificam daca pot imparti vectorul vect in cel mult k
//secvente avand volumul saltelelor mai mic decat mij
if(areLoc(mij)==1)
{
copiest=mij;
dr=mij-1;
}
else st=mij+1;
}
fout<<copiest;
}
int main()
{
fin>>n>>k;
for(int i=1;i<=n;i++)
{
fin>>v[i];
}
cautare_binara();
return 0;
}