2961번

seuls2·2023년 10월 4일

BOJ

목록 보기
54/55
post-thumbnail

2961

#include <iostream>
#include <vector>

using namespace std;

int n;
int answer = 987654321;
vector<pair<int, int>> v;
int visited[10] = {false};

int getDiff(vector<int> selectedIdxs)
{
    int sour = 1;
    int bitter = 0;
    for (int i = 0; i < selectedIdxs.size(); i++)
    {
        sour *= v[selectedIdxs[i]].first;
        bitter += v[selectedIdxs[i]].second;
    }
    return abs(sour - bitter);
}

void getAnswer(int index, vector<int> selectedIdxs)
{
    answer = min(answer, getDiff(selectedIdxs));
    for (int i = index + 1; i < n; i++)
    {
        if (!visited[i])
        {
            visited[i] = true;
            selectedIdxs.push_back(i);
            getAnswer(i, selectedIdxs);
            visited[i] = false;
            selectedIdxs.pop_back();
        }
    }
}

int main()
{
    cin >> n;

    for (int i = 0; i < n; i++)
    {
        int sour, bitter; // 신맛, 쓴맛
        cin >> sour >> bitter;
        v.push_back(make_pair(sour, bitter));
    }

    for (int i = 0; i < n; i++)
    {
        vector<int> selectedIdxs;
        visited[i] = true;
        selectedIdxs.push_back(i);
        getAnswer(i, selectedIdxs);
    }

    cout << answer;
}
profile
공부 기록용 ( ᵕ·̮ᵕ )♩

0개의 댓글