Pagini recente » Cod sursa (job #102834) | Istoria paginii runda/asgarga/clasament | Cod sursa (job #831249) | Cod sursa (job #74147) | Cod sursa (job #1496168)
#include <bits/stdc++.h>
#define nmax 16001
using namespace std;
int a[nmax], n, k, C;
void Citire()
{
int i;
ifstream fin("transport.in");
fin >> n >> k;
for (i = 1; i <= n; i++)
fin >> a[i];
fin.close();
}
/// ret. true daca se pot incarca in k transporturi de capacitate C
bool Verifica(int C)
{
int i, cnt, s;
cnt = 0;
s = 1000000001;
for (i = 1; i <= n; ++i)
{
if (a[i] > C) return false;
if (s + a[i] <= C) s += a[i];
else
{
cnt++;
s = a[i];
}
}
if (cnt > k) return false;
return true;
}
void CautBin()
{
int st, dr, m;
st = 1; dr = 256000000;
C = 256000000;
while (st <= dr)
{
m = (st + dr) / 2;
if (Verifica(m))
{
C = m;
dr = m - 1;
}
else st = m + 1;
}
ofstream fout("transport.out");
fout << C << "\n";
fout.close();
}
int main()
{
Citire();
CautBin();
return 0;
}