Pagini recente » Cod sursa (job #1896669) | Cod sursa (job #1511228) | Cod sursa (job #2920968) | Cod sursa (job #926851) | Cod sursa (job #1246906)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("transport.in");
ofstream fout("transport.out");
#define MAX 16005
int n, k, mid, rez;
int st = -1, dr = 0;
int a[MAX];
int verif(int capacitate)
{
int z = 0;
for(int i = 1; i<=n; i++)
{
if(capacitate>a[i])
capacitate-=a[i], z++;
else if(capacitate==a[i])
return ++z;
else if(capacitate<a[i])
return z;
}
}
int main()
{
fin >> n >> k;
for(int i = 1; i<=n; i++)
{
fin >> a[i];
st = max(st, a[i]);
dr+=a[i];
}
while(st<=dr)
{
mid = (st+dr)/2;
if(verif(mid)>k)
st = mid+1;
else if (verif(mid) <= k)
{
rez = mid;
dr = mid - 1;
}
}
fout << rez;
return 0;
}