Pagini recente » Cod sursa (job #580156) | Cod sursa (job #786720) | Cod sursa (job #552214) | Cod sursa (job #774533) | Cod sursa (job #2020819)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
int a[16005],n,k;
void Citire()
{
int i;
fin>>n>>k;
for (i=1;i<=n;i++)
fin>>a[i];
}
///returneaza 1 daca sirul se poate imparti in cel mult k grupe
///fiecare grupa avand suma <= s
int SePoateImparti(int s)
{
int suma,ct,i;
suma=0; ct=1;
for (i=1;i<=n;i++)
{
if (a[i]>s) return 0;
if (suma+a[i]<=s) suma+=a[i];
else
{
ct++;
suma=a[i];
}
}
if (ct<=k) return 1;
return 0;
}
void CautBin()
{
int st,dr,p,mj;
st=1;
dr=256000000;
p=256000000;
while(st<=dr)
{
mj=st+(dr-st)/2;
if (SePoateImparti(mj)==1)
{
p=mj;
dr=mj-1;
}
else st=mj+1;
}
fout<<p;
}
int main()
{
Citire();
CautBin();
fin.close();
fout.close();
return 0;
}