Submission #930824

# Submission time Handle Problem Language Result Execution time Memory
930824 2024-02-20T13:19:17 Z ksujay2 Building 4 (JOI20_building4) C++17
0 / 100
0 ms 348 KB
#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for(int i = (a); i < (b); i++)
#define F0R(i, b) for(int i = 0; i < (b); i++)
#define R0F(i, b) for(int i = (b) - 1; i >= 0; i--)
#define ROF(i, a, b) for(int i = (b) - 1; i >= (a); i--)
using pi = pair<int, int>;
int main() {
  ios::sync_with_stdio(false), cin.tie(nullptr);
  int N; cin >> N;
  vector<int> A(2 * N), B(2 * N);
  F0R(i, 2 * N) cin >> A[i];
  F0R(i, 2 * N) cin >> B[i];
  vector<array<int, 2>> dp(2 * N, {{-1, -1}});
  dp[0][0] = -2;
  dp[0][1] = -2;
  FOR(i, 1, 2 * N) {
    if(dp[i - 1][0] != -1) {
      if(A[i - 1] <= A[i]) {
        dp[i][0] = 0;
      }
      if(A[i - 1] <= B[i]) {
        dp[i][1] = 0;
      }
    }
    if(dp[i - 1][1] != -1) {
      if(B[i - 1] <= A[i]) {
        dp[i][0] = 1;
      }
      if(B[i - 1] <= B[i]) {
        dp[i][1] = 1;
      }
    }
  }
  if(dp.back()[0] != -1) {
    vector<int> choice(2 * N);
    choice[2 * N - 1] = 0;
    ROF(i, 2 * N, 1) {
      choice[i - 1] = dp[i][choice[i]]; 
    }
    F0R(i, 2 * N) {
      if(choice[i] == 0) cout << 'A';
      else cout << 'B';
    }
  } else if(dp.back()[1] != -1) {
    vector<int> choice(2 * N);
    choice[2 * N - 1] = 1;
    ROF(i, 2 * N, 1) {
      choice[i - 1] = dp[i][choice[i]]; 
    }
    F0R(i, 2 * N) {
      if(choice[i] == 0) cout << 'A';
      else cout << 'B';
    }
  } else {
    cout << -1 << endl;
  }
}
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -