#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
inline void debugMode() {
    #ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    #endif // ONLINE_JUDGE
}
void solve() {
    int n, inf = 1e9;
    cin >> n;
    int a[2 * n][2];
    int mn[2 * n][2], mx[2 * n][2];
    for (int i = 0; i < 2 * n; i++) {
        cin >> a[i][0];
        mn[i][0] = mn[i][1] = inf;
        mx[i][0] = mx[i][1] = -inf;
    }
    for (int i = 0; i < 2 * n; i++) {
        cin >> a[i][1];
    }
    mn[0][0] = 0;
    mn[0][1] = 1;
    mx[0][0] = 0;
    mx[0][1] = 1;
    for (int i = 1; i < 2 * n; i++) {
        for (int j = 0; j < 2; j++) {
            for (int g = 0; g < 2; g++) {
                if (a[i][j] < a[i - 1][g])
                    continue;
                mn[i][j] = min(mn[i][j], mn[i - 1][g] + j);
                mx[i][j] = max(mx[i][j], mx[i - 1][g] + j);
            }
            // cout << mn[i][j] << " " << mx[i][j] << " ";
        }
        // cout << "\n";
    }
    for (int z = 0; z < 2; z++) {
        if (mn[2 * n - 1][z] > n || mx[2 * n - 1][z] < n)
            continue;
        int now = z, need = n, last;
        vector<char> v;
        for (int i = 2 * n - 1; i >= 0; i--) {
            // cout << now << " " << need << " " << mn[i][now] << " " << mx[i][now] << "\n";
            if (i != 2 * n - 1 && a[i + 1][last] < a[i][now])
                now ^= 1;
            else if (mn[i][now] > need || mx[i][now] < need)
                now ^= 1;
            need -= now;
            v.push_back((now ? 'B' : 'A'));
            last = now;
        }
        reverse(v.begin(), v.end());
        for (auto i : v)
            cout << i;
        return;
    }
    cout << -1;
}
signed main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    // debugMode();
    int $ = 1;
    // cin >> $;
    while ($--) {
        solve();
    }
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |