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 |