Pagini recente » Cod sursa (job #2275282) | Istoria paginii runda/simulare_oji_2023_clasa_10_13_martie/clasament | Cod sursa (job #2186949) | Cod sursa (job #1391750) | Cod sursa (job #2144550)
#include <bits/stdc++.h>
using namespace std;
ifstream in("transport.in");
ofstream out("transport.out");
int main() {
int n, k; in >> n >> k;
vector< int > v(n);
int sum = 0;
for(auto& it: v) {
in >> it;
sum += it;
}
int minSum = INT_MAX;
if(*max_element(v.begin(), v.end()) >= (sum / k) + (sum % k)) {
out << *max_element(v.begin(), v.end()) << '\n';
} else {
int aproxSum = (sum / k) + (sum % k);
int currentSum = v[0];
for(int i = 1; i < n; ++i) {
while(currentSum + v[i] <= aproxSum && i < n) {
currentSum += v[i];
++i;
}
if(currentSum + v[i] > aproxSum && currentSum + v[i] < minSum) {
minSum = currentSum + v[i];
currentSum = v[i];
} else {
if(currentSum == aproxSum)
minSum = aproxSum;
currentSum = 0;
}
--i;
}
}
out << minSum << '\n';
in.close(); out.close();
return 0;
}