Pagini recente » Cod sursa (job #301539) | Cod sursa (job #1072769) | Cod sursa (job #1737414) | Cod sursa (job #1907229) | Cod sursa (job #1259327)
#include<fstream>
using namespace std;
int main ()
{
ifstream fin ("transport.in");
ofstream fout ("transport.out");
int n,k;
fin>>n>>k;
int a[n],sum=0,m,maxim=0,nr;
for(int i=1;i<=n;i++)
{
fin>>a[i];
sum+=a[i];
if(a[i]>=maxim)
maxim=a[i];
}
m=sum/k;
int stanga=max(maxim,m);
int dreapta=sum;
int mij=(stanga+dreapta)/2;
int salt,drum;
while(stanga<=dreapta)
{
drum=1;
salt=0;
for(int i=1;i<=n;i++)
{
if(salt+a[i]>mij)
{
drum++;
salt=a[i];
}
else
salt+=a[i];
}
if(drum>k)
stanga=mij+1;
else
{
nr=mij;
dreapta=mij-1;
}
mij=(stanga+dreapta)/2;
}
fout<<nr;
}