// UVa 12390 - Distributing Ballot Boxes
#include <iostream>
#include <stdio.h>
#include <queue>
using namespace std;
int a[500000];
int n, b;
bool possible(int m) {
int tot = 0;
for (int i = 0; i < n; i++) {
int need = (a[i] / m) + (a[i] % m ? 1 : 0);
tot += need;
}
return tot <= b;
}
int main() {
while ((cin >> n >> b) && (n != -1 || b != -1)) {
int fin = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
if (a[i] > fin)
fin = a[i];
}
int sol = 0;
int ini = 1;
while (ini <= fin) {
int mid = (ini + fin) >> 1;
if (possible(mid)) {
sol = mid;
fin = mid - 1;
} else
ini = mid + 1;
}
cout << sol << endl;
}
return 0;
}
Saturday, May 16, 2015
UVa 12390 - Distributing Ballot Boxes
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment