제출 #1178127

#제출 시각아이디문제언어결과실행 시간메모리
1178127VMaksimoski008건물 4 (JOI20_building4)C++20
11 / 100
691 ms589824 KiB
#include <bits/stdc++.h>
#define ar array
//#define int long long

using namespace std;

using ll = long long;
using pii = pair<int, int>;
using pll = pair<ll, ll>;

const int mod = 1e9 + 7;
const ll inf = 1e18;
const int maxn = 1e5 + 5;

signed main() {
    int n; cin >> n;
    int a[2][2*n+1];
    for(int i=0; i<2; i++)
        for(int j=1; j<=2*n; j++) cin >> a[i][j];

    ar<int, 3> par[2*n+1][n+1][2];
    int dp[2*n+1][n+1][2];
    memset(dp, 0, sizeof(dp));

    for(int i=0; i<=2*n; i++)
        for(int j=0; j<=n; j++)
            for(int k=0; k<2; k++) par[i][j][k] = { -1, -1, -1 };

    dp[1][1][0] = 1;
    dp[1][0][1] = 1;

    for(int i=2; i<=2*n; i++) {
        for(int j=0; j<=n; j++) {
            if(j > 1 && dp[i-1][j-1][0] && a[0][i-1] <= a[0][i]) {
                dp[i][j][0] = 1;
                par[i][j][0] = { i-1, j-1, 0 };
            }
            if(j && dp[i-1][j-1][1] && a[1][i-1] <= a[0][i]) {
                dp[i][j][0] = 1;
                par[i][j][0] = { i-1, j-1, 1 };
            }
            if(j && dp[i-1][j][0] && a[0][i-1] <= a[1][i]) {
                dp[i][j][1] = 1;
                par[i][j][1] = { i-1, j, 0 };
            }
            if(dp[i-1][j][1] && a[1][i-1] <= a[1][i]) {
                dp[i][j][1] = 1;
                par[i][j][1] = { i-1, j, 1 };
            }
        }
    }

    if(!dp[2*n][n][0] && !dp[2*n][n][1]) {
        cout << -1 << '\n';
    } else {
        ar<int, 3> curr = { -1, -1, -1 };
        if(dp[2*n][n][0]) curr = { 2*n, n, 0 };
        else curr = { 2*n, n, 1 };
        string ans = "";

        while(curr[0] != -1) {
            auto [i, j, k] = curr;
            if(k == 0) ans += 'A';
            else ans += 'B';
            curr = par[i][j][k];
        }

        reverse(ans.begin(), ans.end());
        cout << ans << '\n';
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...