이번 문제는 브루트포스 알고리즘을 활용하여 해결하는 문제였다.
#include <iostream>
#include <vector>
#include <math.h>
#define MAX 11
using namespace std;
int n;
long long sb[MAX][MAX];
bool used[MAX];
long long ts=1, tb=0;
long long result=0;;
void Input(){
cin>>n;
for(int i=0; i<n; i++){
cin>>sb[i][0]>>sb[i][1];
ts*=sb[i][0];
tb+=sb[i][1];
}
result=abs(ts-tb);
}
void Solution(int n, long long s, long long b){
if(n==0){
return;
}
if(result>abs(s-b)){
result=abs(s-b);
}
for(int i=0; i<n; i++){
if(!used[i]){
used[i]=true;
Solution(n-1, s/sb[i][0], b-sb[i][1]);
used[i]=false;
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
Input();
Solution(n, ts, tb);
cout<<result<<endl;
return 0;
}