Pagini recente » Cod sursa (job #808018) | Cod sursa (job #3247017) | Cod sursa (job #449292) | Cod sursa (job #1983495) | Cod sursa (job #931622)
Cod sursa(job #931622)
#include <stdio.h>
#include <fstream>
using namespace std;
long a[16010],n,kk,poz;
long nr=0;
long S;
long mata;
void citire()
{
ifstream fin("transport.in");
fin>>n>>kk;
for (int i=0;i<n;i++)
{ fin>>a[i];
S+=a[i];
if (mata < a[i]) mata = a[i];
}
a[n]=99999999;
fin.close();
}
long parc ()
{
while (mata<=S)
{
int m=(mata+S)/2;
int S1=0;
int tra=0;
for (int i=0;i<n;i++)
{
S1=S1+a[i];
if (S1+a[i+1]>m)
{
tra++;
S1=0;
}
}
if (tra<=kk)
{
poz=m;
S=m-1;
}
else
{
mata=m+1;
}
}
return poz;
}
int main ()
{
citire();
freopen ("transport.out","w",stdout);
printf("%ld\n",parc());
fclose(stdout);
return 0;
}