This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimization("O3")
#pragma GCC optimization("unroll-loops")
#pragma comment(linker, "/stack:200000000")
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
#define int long long
#define ll long long
#define pb push_back
#define ppb pop_back
#define F first
#define S second
#define all(x) x.begin(),x.end()
#define fast ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define freopen(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout);
const int N = 1000000 + 5;
const int M = 4000 + 5;
const ll mod = 1e9 + 7;
const ll inf = 1e17;
int n, a[N], b[N], dp[M][M];
char par[M][M];
string s;
void solve(){
cin >> n;
n *= 2;
for(int i = 1; i <= n; i ++){
cin >> a[i];
}
for(int i = 1; i <= n; i++){
cin >> b[i];
}
for(int i = 1; i <= n; i++){
for(int j = 0; j <= n / 2; j++){
dp[i][j] = inf;
}
dp[0][i] = inf;
}
for(int i = 1; i <= n; i++){
for(int j = 0; j <= min(i, n / 2); j++){
if(dp[i - 1][j] <= b[i]){
dp[i][j] = b[i];
par[i][j] = 'B';
}
if(j && a[i] < dp[i][j] && dp[i - 1][j - 1] <= a[i]){
dp[i][j] = a[i];
par[i][j] = 'A';
}
// cout << i << ' ' << j << ' ' << dp[i][j] << ' ' << par[i][j] << '\n';
}
}
if(dp[n][n / 2] != inf){
int i = n;
int cnt = n / 2;
// cout << par[n][cnt] << '\n';
while(i){
if(par[i][cnt] == 'A'){
cnt--;
s += 'A';
}else{
s += 'B';
}
i--;
}
reverse(all(s));
cout << s;
}else{
cout << -1;
}
}
main() {
fast
int tt = 1;
// cin >> tt;
while(tt--){
solve();
}
}
Compilation message (stderr)
building4.cpp:3: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
3 | #pragma GCC optimization("O3")
|
building4.cpp:4: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
4 | #pragma GCC optimization("unroll-loops")
|
building4.cpp:5: warning: ignoring '#pragma comment ' [-Wunknown-pragmas]
5 | #pragma comment(linker, "/stack:200000000")
|
building4.cpp:78:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
78 | main() {
| ^~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |