반응형
2529번: 부등호
두 종류의 부등호 기호 ‘<’와 ‘>’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제
www.acmicpc.net
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | #include <iostream> #include <algorithm> #define ll long long #define rep(i,n) for(int i=0;i<n;i++) using namespace std; int n; char arr[10]; int visited[10]; int num_arr[10]; int max_arr[10]; int min_arr[10]; ll ans_max = -9999999999, ans_min = 9999999999, temp; void dfs(int num, int idx, int cnt) { temp = 0; if (idx==n) { rep(i, cnt) { temp = temp * 10 + num_arr[i]; } if (temp > ans_max) { ans_max = temp; rep(i, n+1) max_arr[i] = num_arr[i]; } if (temp < ans_min) { ans_min = temp; rep(i, n+1) min_arr[i] = num_arr[i]; } return; } if (arr[idx] == '>') { for (int i = num - 1; i >= 0;i--) { if (!visited[i]) { visited[i] = 1; num_arr[cnt] = i; dfs(i, idx + 1, cnt + 1); visited[i] = 0; } } } else { for (int i = num + 1; i <= 9; i++) { if (!visited[i]) { visited[i] = 1; num_arr[cnt] = i; dfs(i, idx + 1, cnt + 1); visited[i] = 0; } } } } int main() { cin >> n; rep(i, n) cin >> arr[i]; rep(i, 10) { visited[i] = 1; num_arr[0] = i; dfs(i, 0, 1); visited[i] = 0; } rep(i, n+1) cout << max_arr[i]; cout << '\n'; rep(i, n+1) cout << min_arr[i]; } | cs |
반응형