Pagini recente » Cod sursa (job #1645630) | Cod sursa (job #2412466) | Monitorul de evaluare | Cod sursa (job #2611569) | Cod sursa (job #2404844)
#include <fstream>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
bool CamionOK (int C, int n, int k, int a[] )
{
int i=1, c, nr_drumuri=0;
while(i<=n)
{
c=0;
while(c+a[i]<=C && i<=n)
{
c=c+a[i];
i++;
}
nr_drumuri++;
}
if(nr_drumuri<=k)
return true;
return false;
}
int main()
{
int n, k, a[16001], max=0, s=0;
f>>n>>k;
for(int i=1; i<=n; i++)
{
f>>a[i];
s=s+a[i];
if(a[i]>max)
max=a[i];
}
int st=max, dr=s, mij, sol;
while(st<=dr)
{
mij=st+(dr-st)/2;
if(CamionOK(mij,n,k,a))
{
sol=mij;
dr=mij-1;
}
else
st=mij+1;
}
g<<sol;
g.close();
f.close();
return 0;
}