Pagini recente » Cod sursa (job #2427240) | Cod sursa (job #2769441) | Cod sursa (job #1814473) | Cod sursa (job #2697001) | Cod sursa (job #1396586)
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int v[16005],n,k;
int main()
{
int i,s = 0, med,last = 0, st, dr, sum, nrt;
fin>>n>>k;
for(i=1; i<=n; i++)
{
fin>>v[i];
s=s+v[i];
}
st = 1;
dr = s;
while(st<=dr)
{
med=(st+dr)/2;
sum = 0;
nrt = 0;
// Calculam in variabila nrt cate transporturi sunt necesare cu un camion
// de capacitate med
for(i=1; i<=n; i++)
{
if(v[i]> med)
{
nrt = k + 1; break;
}
if(sum + v[i] <= med)
sum = sum + v[i];
else
{
sum = v[i];
nrt++;
}
}
if(sum > 0)
nrt++;
if( nrt <= k) // Incercam o capacitate mai mica
{
last = med;
dr = med - 1;
}
else
st = med + 1;
} // while
fout<<last<<"\n";
fin.close();
fout.close();
return 0;
}