Perket 是一种流行的美食。为了做好 Perket,厨师必须谨慎选择食材,以在保持传统风味的同时尽可能获得最全面的味道。你有 n n n 种可支配的配料。对于每一种配料,我们知道它们各自的酸度 s s s 和苦度 b b b。当我们添加配料时,总的酸度为每一种配料的酸度总乘积;总的苦度为每一种配料的苦度的总和。
众所周知,美食应该做到口感适中,所以我们希望选取配料,以使得酸度和苦度的绝对差最小。
另外,我们必须添加至少一种配料,因为没有任何食物以水为配料的。
第一行一个整数 n n n,表示可供选用的食材种类数。
接下来 n n n 行,每行 2 2 2 个整数 s i s_i si 和 b i b_i bi,表示第 i i i 种食材的酸度和苦度。
一行一个整数,表示可能的总酸度和总苦度的最小绝对差。
1
3 10
7
2
3 8
5 8
1
4
1 7
2 6
3 8
4 9
1
对于 100 % 100\% 100% 的数据,有 1 ≤ n ≤ 10 1 \leq n \leq 10 1≤n≤10,且将所有可用食材全部使用产生的总酸度和总苦度小于 1 × 1 0 9 1 \times 10^9 1×109,酸度和苦度不同时为 1 1 1 和 0 0 0。
#include
using namespace std;
const int N = 10;
int s[N], b[N],n,ans=114514;
void dfs(int x,int y,int m) {
ans = min(ans, abs(x - y));
for (int i = m+1; i < n; i++)
dfs(x * s[i], y + b[i],i);
}
int main() {
cin >> n;
for (int i = 0; i < n; i++)
cin >> s[i]>>b[i];
for (int i = 0; i < n; i++)
dfs(s[i],b[i],i);
cout << ans;
}