제출 #1228224

#제출 시각아이디문제언어결과실행 시간메모리
1228224RakhimovAmir건물 4 (JOI20_building4)C++20
0 / 100
1 ms328 KiB
#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; vector<char> v; for (int i = 2 * n - 1; i >= 0; i--) { // cout << now << " " << need << " " << mn[i][now] << " " << mx[i][now] << "\n"; if (mn[i][now] > need || mx[i][now] < need) now ^= 1; need -= now; v.push_back((now ? 'B' : 'A')); } 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...