Pagini recente » Cod sursa (job #2083680) | Cod sursa (job #2627235) | Cod sursa (job #2729435) | Cod sursa (job #2379790) | Cod sursa (job #2493465)
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
int verif (int x, int v[], int n)
{
if(x==0) return 256000001;
else{int aux, nr, i;
aux=0;
nr=0;
for(i=1; i<=n; i++)
{
// cout<<"v["<<i<<"]= "<<v[i]<<"\n";
//cout<<"aux= "<<aux<<"\nnr= "<<nr<<"\n";
if(aux+v[i] <=x )aux=aux+v[i];
else
{
nr++;
aux=v[i];
}
//cout<<"!!!!\naux= "<<aux<<"\nnr= "<<nr<<"\n\n";
}
if(aux!=0) nr++;
return nr;
}
}
int v[16002];
int main()
{
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n, k, i, p, u, mij, aux1, aux2;
bool ok;
fin>>n>>k;
for(i=1; i<=n; i++)
{
fin>>v[i];
}
//v[n+1]=16001;
p=1;
u=256000000;
ok=0;
//256 000 000
while(p<=u && ok==0)
{
mij=(p+u)/2;
aux1 = verif ( mij, v, n);
aux2 = verif (mij-1, v, n);
if(aux1 <= k && aux2 >k) ok=1;
else if(aux1>k) p=mij+1;
else if(aux2 <=k) u=mij-1;
}
if(ok==1) fout<<mij;
else fout<<1;
}