Pagini recente » Cod sursa (job #2787135) | Cod sursa (job #1814537) | Cod sursa (job #1630434) | Cod sursa (job #840133) | Cod sursa (job #2133323)
#include <bits/stdc++.h>
#define INFILE "transport.in"
#define OUTFILE "transport.out"
using namespace std;
ifstream in(INFILE);
ofstream out(OUTFILE);
int K;
int N;
int CMAX;
vector<int> valori;
void Read(){
in>>N>>K;
for(int i=1;i<=N;i++){
int x;
in>>x;
CMAX+=x;
valori.push_back(x);
}
}
bool OK(int cap){
int nrtr=0;
int s=0;
for(int i=0;i<valori.size();i++){
if(valori[i]>cap)
return false;
s+=valori[i];
if(s>cap){
nrtr++;
s=valori[i];
}
}
if(s!=0)
nrtr++;
if(nrtr>K)
return false;
return true;
}
int Cautare(){
int left=0;
int right=CMAX+1;
while(left!=right){
int mid=(left+right)/2;
bool ok=OK(mid);
if(!ok){
left=mid+1;
}
else{
right=mid;
}
}
return right;
}
int main()
{
Read();
out<<Cautare();
return 0;
}