Submission #930824

#TimeUsernameProblemLanguageResultExecution timeMemory
930824ksujay2Building 4 (JOI20_building4)C++17
0 / 100
0 ms348 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...