Pagini recente » Cod sursa (job #1697639) | Cod sursa (job #3319115) | Cod sursa (job #3324138) | Cod sursa (job #2048462) | Cod sursa (job #3341565)
#include <fstream>
using namespace std;
ifstream cin("transport.in");
ofstream cout("transport.out");
int v[16001];
int convine(int x, int n, int nrmax, int v[])
{
int sumatemp=0, cnt=0;
for (int i=1; i<=n; i++) {
if (v[i]>x) return false;
if (sumatemp+v[i]<=x) {
sumatemp+=v[i];
}
else {
cnt++;
sumatemp=v[i];
}
}
if (sumatemp<=x) cnt++;
if (cnt<=nrmax) return true;
return false;
}
int main()
{
int n, nrmax, suma=0;
cin >> n >> nrmax;
for (int i=1; i<=n; i++) {
cin >> v[i];
suma+=v[i];
}
int rasp=0;
for (int i=(1 << 28); i>=1; i/=2) {
if (convine(rasp+i, n, nrmax, v)==false) {
rasp+=i;
}
}
cout << rasp+1;
return 0;
}