Pagini recente » Cod sursa (job #425617) | Cod sursa (job #2045337) | Cod sursa (job #1812945) | Cod sursa (job #1759746) | Cod sursa (job #2777514)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int sir[16005];
int n, k;
int maxi=0, mini = 16001;
void read()
{
in >> n >> k;
int i;
for(i=1; i<=n; i++)
{
in >> sir[i];
if(sir[i]>maxi)
{
maxi = sir[i];
}
}
}
int main()
{
read();
int st,dr,j,mij,suma,i,sol;
st = maxi;
dr = 16000 * 16000;
while(st<=dr)
{
mij = (st + dr) / 2;
suma = 0;
j=1;
for(i=1;i<=n;i++){
if(suma+sir[i]<=mij){
suma += sir[i];
}
else{
suma = sir[i];
j++;
}
}
if(j<=k){
sol=mij;
dr=mij-1;
}
else{
st=mij+1;
}
}
out << sol;
}