Pagini recente » Cod sursa (job #508401) | Cod sursa (job #1053659) | Cod sursa (job #1827352) | Cod sursa (job #2280615) | Cod sursa (job #1350121)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int main()
{
long long n,i,k,Max=0,suma=0,inc,mij,sf,cont,m,rez;
in>>n>>k;
int x[n+1];
for(i=1;i<=n;i++)
{in>>x[i];
if(x[i]>Max) Max=x[i];
suma+=x[i];
}
inc=Max;
sf=suma;
while(inc<=sf)
{
mij=(inc+sf)/2;
m=0;
cont=1;
for(i=1;i<=n;i++)
{
m=m+x[i];
if(m>mij)
{
m=x[i];
cont++;
}
if(cont>k) break;
}
if(cont<=k)
{sf=mij-1;
rez=mij;}
else
{inc=mij+1;
rez=mij+1;}
}
out<<rez;
return 0;
}