#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define _ <<' '<<
#define print(x) cout<<#x<<": "<<(x)<<'\n'
int n;
vector<int> a, b, dp;
int main(){
cin.tie(0)->sync_with_stdio(0);
cout.tie(0);
cin>>n;
a.resize(n);
b.resize(n);
dp.assign(n+1, 0);
for (int i=0; i<n; i++) cin>>a[i];
for (int i=0; i<n; i++) cin>>b[i];
for (int i=0; i<n; i++) {
int ct=0;
dp[i+1]=max(dp[i+1], dp[i]);
for (int j=i; j>=0; --j) {
//cout<<i _ j<<'\n';
if (a[j]>a[i]) break;
if (b[j]==a[i]) {
//print(i);
//print(j);
dp[i+1]=max(dp[i+1], dp[j]+(++ct));
}
}
ct=0;
for (int j=i+1; j<n; j++) {
if (a[j]>b[i]) break;
if (b[j]==a[i]) {
dp[j+1]=max(dp[j+1], dp[i+1]+(++ct));
//print(i);
//print(j);
//print(dp[j+1]);
//print(dp[i+1]+(ct));
}
}
}
//for (int i=0; i<n; i++) print(dp[i]);
cout<<dp[n]<<'\n';
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |