Pagini recente » Cod sursa (job #1933899) | Monitorul de evaluare | Cod sursa (job #709515) | Cod sursa (job #3327410) | Cod sursa (job #3318267)
#include <bits/stdc++.h>
using namespace std;
int main()
{
ifstream fin("transport.in");
ofstream fout("transport.out");
int n, k;
int toAdd;
int currentSum = 0;
fin>>n>>k;
stack<int> saltele;
stack<int> decoy;
long long a, b, q;
a = 0;
b = 0;
for(int i = 0; i < n; i++) {
fin>>toAdd;
b+= toAdd;
decoy.push(toAdd);
}
for(int i = 0; i < n; i++) {
saltele.push(decoy.top());
decoy.pop();
}
//cout<<b;
while(a <= b) {
q = (a+b)/2;
decoy = saltele;
for(int i = 0; i < k; i++) {
currentSum = 0;
while(!decoy.empty() && currentSum + decoy.top() <= q) {
currentSum += decoy.top();
decoy.pop();
}
}
// cout<<decoy.top()<<" "<<q<<"\n";
if(decoy.empty()) {
//PROCESEAZA ==> MERGE
b = q - 1;
} else {
a = q + 1;
//PROCESEAZA ==> NU MERGE
}
// cout<<q<<"\n";
}
fout<<q;
return 0;
}