#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, 1, 2 * N) {
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, 1, 2 * N) {
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 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
456 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
1 ms |
348 KB |
Output is correct |
6 |
Incorrect |
1 ms |
604 KB |
Output isn't correct |
7 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
456 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
1 ms |
348 KB |
Output is correct |
6 |
Incorrect |
1 ms |
604 KB |
Output isn't correct |
7 |
Halted |
0 ms |
0 KB |
- |