Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- typedef long long LL;
- int cmp(int a, int b) {
- return a > b;
- }
- LL divCeil(LL numerator, LL denumerator) {
- return (numerator + denumerator - 1) / denumerator;
- }
- bool check(vector<int> &as, int x, int y, int toCheck) {
- int hardRebukeCount = 0;
- for (int a : as) {
- /*
- p * x + (toCheck - p) * y >= a
- p * (x - y) + toCheck * y >= a
- p >= (a - toCheck * y) / (x - y)
- */
- if (a - 1L * toCheck * y <= 0) {
- continue;
- }
- int p = divCeil(a - toCheck * y, x - y);
- hardRebukeCount += p;
- if (hardRebukeCount > toCheck) {
- return false;
- }
- }
- return true;
- }
- int main() {
- ifstream cin("in.txt");
- int n, x, y;
- cin >> n >> x >> y;
- vector<int> a(n);
- for (int i = 0; i < n; i++) {
- cin >> a[i];
- }
- sort(a.begin(), a.end(), cmp);
- int l = 0, r = divCeil(a[0], x) + 1;
- while (l + 1 != r) {
- int m = (l + r) / 2;
- if (check(a, x, y, m)) {
- r = m;
- } else {
- l = m;
- }
- }
- int res = r;
- if (check(a, x, y, l)) {
- res = l;
- }
- cout << res << "\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement