입력값 안 보고 어떻게 풀까 고민했는데 n이 10이었다!
그냥 모든 경우의 수를 확인해버리자
재료의 모든 경우를 구하는 건 부분집합을 구하는 것과 같아서 비트마스크를 사용했다
간단~~
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <bitset>
#define xx first
#define yy second
#define all(x) (x).begin(), (x).end()
using namespace std;
using i64 = long long int;
using ii = pair<int, int>;
using ii64 = pair<i64, i64>;
int main()
{
int n;
cin >> n;
vector<ii> v(n);
for (int i = 0; i < n; i++)
cin >> v[i].xx >> v[i].yy;
i64 minv = 1000000005;
for (int i = 1; i < (1 << v.size()); i++)
{
ii64 res;
res.xx = 1, res.yy = 0;
for (int j = 0; j < v.size(); j++)
{
if (i & (1 << j))
{
res.xx *= v[j].xx;
res.yy += v[j].yy;
}
}
if (minv > abs(res.xx - res.yy))
minv = abs(res.xx - res.yy);
}
cout << minv;
return 0;
}
'백준' 카테고리의 다른 글
2206 벽 부수고 이동하기 (0) | 2020.09.24 |
---|---|
14699 관악산 등산 (0) | 2020.09.24 |
16113 시그널 (0) | 2020.09.24 |
12847 꿀 아르바이트 (0) | 2020.09.23 |
2217 로프 (0) | 2020.09.23 |