题目描述 小蓝有一个神奇的炉子用于将普通金属 O 冶炼成为一种特殊金属 X。这个炉子有一个称作转换率的属性 V VV,V VV 是一个正整数,这意味着消耗 V VV 个普通金属 O 恰好可以冶炼出一个特殊金属 X,当普通金属 O 的数目不足 V VV 时,无法继续冶炼。
现在给出了 N NN 条冶炼记录,每条记录中包含两个整数 A AA 和 B BB,这表示本次投入了 A AA 个普通金属 O,最终冶炼出了 B BB 个特殊金属 X。每条记录都是独立的,这意味着上一次没消耗完的普通金属 O 不会累加到下一次的冶炼当中。
根据这 N NN 条冶炼记录,请你推测出转换率 V VV 的最小值和最大值分别可能是多少,题目保证评测数据不存在无解的情况。
输入格式 第一行一个整数 N NN,表示冶炼记录的数目。
接下来输入 N NN 行,每行两个整数 A , B A,BA,B,含义如题目所述。
输出格式 输出两个整数,分别表示 V VV 可能的最小值和最大值,中间用空格分开。
样例 #1 样例输入 #1 3 75 3 53 2 59 2 1 2 3 4 样例输出 #1 20 25 1 提示 【样例说明】
当 V = 20 V=20V=20 时,有:⌊ 75 20 ⌋ = 3 , ⌊ 53 20 ⌋ = 2 , ⌊ 59 20 ⌋ = 2 \left\lfloor\frac{75}{20}\right\rfloor=3,\left\lfloor\frac{53}{20}\right\rfloor=2,\left\lfloor\frac{59}{20}\right\rfloor=2⌊ 20 75 ⌋=3,⌊ 20 53 ⌋=2,⌊ 20 59 ⌋=2,可以看到符合所有冶炼记录。
当 V = 25 V=25V=25 时,有:⌊ 75 25 ⌋ = 3 , ⌊ 53 25 ⌋ = 2 , ⌊ 59 25 ⌋ = 2 \left\lfloor\frac{75}{25}\right\rfloor=3,\left\lfloor\frac{53}{25}\right\rfloor=2,\left\lfloor\frac{59}{25}\right\rfloor=2⌊ 25 75 ⌋=3,⌊ 25 53 ⌋=2,⌊ 25 59 ⌋=2,可以看到符合所有冶炼记录。
且再也找不到比 20 2020 更小或者比 25 2525 更大的符合条件的 V VV 值了。
【评测用例规模与约定】
对于 30 % 30 \%30% 的评测用例,1 ≤ N ≤ 1 0 2 1 \leq N \leq 10^{2}1≤N≤10 2 。
对于 60 % 60 \%60% 的评测用例,1 ≤ N ≤ 1 0 3 1 \leq N \leq 10^{3}1≤N≤10 3 。
对于 100 % 100 \%100% 的评测用例,1 ≤ N ≤ 1 0 4 1 \leq N \leq 10^{4}1≤N≤10 4 ,1 ≤ B ≤ A ≤ 1 0 9 1 \leq B \leq A \leq 10^{9}1≤B≤A≤10 9 。
#include using namespace std;
long long N;
long long get1, get2;
long long a1 = 0, a2 = 9999999999;
long long t1, t2;
int main() {
cin >> N;
for (long long i = 0; i < N; i++)
{
cin >> get1 >> get2;
t2 = get1 / get2;
t1 = get1 / (get2 + 1) + 1;
a1 = max(a1, t1);
a2 = min(a2, t2);
}
cout << a1 << " " << a2;
return 0;
}