Pagini recente » Cod sursa (job #869213) | Cod sursa (job #1678550) | Cod sursa (job #2241820) | Cod sursa (job #614136) | Cod sursa (job #1310026)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int st[100];
int dr(int x,int n) //nr de drumuri pe care le face un camion cu capacitatea x
{
int drum=0,s=0;
while(n) //in asta scadeai n si ramanea 0 si data viitoare. l-am pus eu ca parametru si nu il mai modifica
{
if(s+st[n]<x)
{s=s+st[n]; n--;}
else
if(s+st[n]==x)
{drum++; s=0; n--;}
else
{drum++; s=0;}
}
if(s<x)
drum++;
return drum;
}
int main()
{ int k,i,mx,s,m,n;
f>>n>>k;
for(i=1;i<=n;i++)
{
f>>st[i];
if(st[i]>mx)
mx=st[i]; //cea mai voluminoasa saltea
s+=st[i]; //suma volumelor tututor saltelelor
}
while(mx<s)
{
m=(mx+s)/2;
if(dr(m,n)<=k)
s=m-1;
else
mx=m+1;
}
g<<mx;
f.close(); g.close();
return 0;
}