Pagini recente » Cod sursa (job #1896817) | Cod sursa (job #479539) | Cod sursa (job #1758105) | Cod sursa (job #2500139) | Cod sursa (job #1246917)
#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 mid)
{
int z = 0, s = 0;
for(int i = 1; i<=n; i++)
{
s+=a[i];
if(s>mid)
{
z++;
s = 0;
i--;
}
}
if(s>0)
z++;
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;
}