Pagini recente » Cod sursa (job #3320138) | Cod sursa (job #3320160) | Cod sursa (job #2315437) | Cod sursa (job #3320773) | Cod sursa (job #3344268)
#include <fstream>
using namespace std;
int N,K,st[16001];
ifstream fin("transport.in");
ofstream fout("transport.out");
int nrDrumuri(int camion)
{
int nr_drumuri=0,nr_saltele=0;
while(nr_saltele<N)
{
//incepem sa bagam saltele in camion
int cap_ocupata=0;
while(nr_saltele<N && cap_ocupata+st[nr_saltele+1]<=camion)
{
cap_ocupata+=st[nr_saltele+1];
nr_saltele++;
}
// camionul s a umplut deci facem un transport
nr_drumuri++;
}
return nr_drumuri;
}
int main()
{
int salt_max=0,suma=0,i;
fin>>N>>K;
for(i=1;i<=N;i++)
{
fin>>st[i];
if(st[i]>salt_max)
salt_max=st[i];
suma+=st[i];
}
int st,dr,mij,best_camion;
st=salt_max;
dr=suma;
while(st<=dr)
{
mij=(st+dr)/2;
int nr_drumuri=nrDrumuri(mij);
if(nr_drumuri>K)
st=mij+1;
else
{
best_camion=mij;
dr=mij-1;
}
}
fout<<best_camion;
fin.close();
fout.close();
return 0;
}