본문 바로가기

Study/Algorithm

[백준 #2251] 물통

unordered_set에는 pair가 안 들어가는구나.

 

코드(정답, 1984KB, 0ms)


/**
 * @name: 물통
 * @link: https://www.acmicpc.net/problem/2251
 * @date 2020-05-07
 * @author sunmon
 * TIP: 
**/
#define MAX(a,b) (a>b)? a:b
#define MIN(a,b) (a<b)? a:b
#include <iostream>
#include <set>
using namespace std;
set<pair<int,int> > visited;
int limit[3];
void solve(int water[3]){
    if(visited.insert({water[0],water[2]}).second==false) return;
    for(int i = 0; i<3; i++){
        for(int j = 0; j<3; j++){
            if(i==j) continue;
            int w = MIN(limit[j]-water[j], water[i]);
            int next[3];
            copy(water,water+3, next);
            next[i]-=w;
            next[j]+=w;
            solve(next);
        }
    }
}
int main(){
    for(int i = 0; i<3; i++) cin >> limit[i];
    int water[3] = {0,0,limit[2]};
    solve(water);
    for(auto& v: visited) if(!v.first) cout << v.second << " ";
}

'Study > Algorithm' 카테고리의 다른 글

[프로그래머스] 더 맵게  (0) 2020.05.22
[프로그래머스] 다리를 지나가는 트럭  (0) 2020.05.22
[백준 #2580] 스토쿠  (0) 2020.05.07
[백준 #14391] 종이조각  (0) 2020.05.05
[백준 #1525] 퍼즐  (0) 2020.05.05