4722: 【GESP2506五级】奖品兑换
内存限制:512 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:1
解决:1
题目描述

样例输入 复制
8 8
2 1
样例输出 复制
5
提示
#include <cstdio>
#include <algorithm>
using namespace std;
int n, m, a, b;
int l, r;
int check(int v) {
long long x, y, t;
x = 1ll * v * a;
y = 1ll * v * b;
if (y > m) {
t = (y - m + (b - a) - 1) / (b - a);
y -= t * (b - a);
x += t * (b - a);
}
return x <= n && y <= m;
}
int main() {
scanf("%d%d", &n, &m);
scanf("%d%d", &a, &b);
if (n > m)
swap(n, m);
if (a > b)
swap(a, b);
if (a == b) {
printf("%d\n", n / a);
return 0;
}
l = 0;
r = n;
while (l < r) {
int mid = (l + r + 1) >> 1;
if (check(mid))
l = mid;
else
r = mid - 1;
}
printf("%d\n", r);
return 0;
}