Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <vector>
- using namespace std;
- int main()
- {
- int n, m, i, j;
- scanf("%d", &n);
- vector <int> a(n + 1);
- for(i = 1; i <= n; i++) scanf("%d", &a[i]);
- scanf("%d", &m);
- vector <int> b(m + 1);
- for(i = 1; i <= m; i++) scanf("%d", &b[i]);
- vector < vector <int> > dp(n + 1, vector <int> (m + 1));
- for(i = 1; i <= n; i++)
- {
- for(j = 1; j <= m; j++)
- {
- if(a[i] == b[j]) dp[i][j] = dp[i - 1][j - 1] + 1;
- else dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
- }
- }
- printf("%d", dp[n][m]);
- return 0;
- }
Add Comment
Please, Sign In to add comment