Pagini recente » Cod sursa (job #74604) | Cod sursa (job #1889364) | Cod sursa (job #2568133) | Cod sursa (job #1952682) | Cod sursa (job #1410161)
#include<fstream>
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
ifstream f("transport.in");
ofstream g("transport.out");
int s[16005];
int n, k;
void citire()
{
f>>n>>k;
for(int i=1; i<=n; i++)
f>>s[i];
}
int verif(int val)
{
int nrt, i, sum=0;
nrt = 1;
for(i=1; i<=n; i++){
if(sum + s[i] <= val)
sum += s[i];
else{
if(s[i] <= val)
sum = s[i];
else
return 0;
nrt++;
}
}
return nrt<=k;
}
void cautare()
{
int st=1, dr=1000000000, mid, sol;
mid = (st+dr)/2;
while(st<=dr)
{
if(verif(mid)){
sol = mid;
dr = mid - 1;
}
else
st = mid + 1;
mid = (st+dr)/2;
}
g<<sol<<"\n";
}
int main()
{
citire();
cautare();
return 0;
}