fork download
  1. #include <bits/stdc++.h>
  2. #define int long long
  3. #define fast ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
  4. #define lg2(n) (63-__builtin_clzll(n))
  5. #define mask(n) (1LL << (n))
  6. #define TASK ""
  7. #define openfile(); if( fopen(TASK".inp", "r")){freopen(TASK".inp", "r", stdin);freopen(TASK".out", "w", stdout);}
  8. #define lc(n) (n << 1)
  9. #define rc(n) ((n << 1) | 1)
  10.  
  11. #define fi first
  12. #define se second
  13. #define FOR(i, l, r, k) for( int i = l; i <= r; i += k)
  14. #define FOD(i, r, l, k) for( int i = r; i >= l; i -= k)
  15.  
  16. #define mii map<int,int>
  17. #define umi unordered_map<int, int>
  18. #define pii pair<int,int>
  19. #define vi vector<int>
  20.  
  21. using namespace std;
  22.  
  23. const int oo = 1e18;
  24. const int mod = 1e9 + 9;
  25. const int nmax = 1e3 + 8;
  26. const int base = 311;
  27.  
  28. int n, m, k, a[nmax], b[nmax], dp[nmax][nmax];
  29.  
  30. main(){
  31. fast;
  32. openfile();
  33. cin >> n >> m;
  34. int ans = 0;
  35. FOR(i, 1, n, 1) cin >> a[i];
  36. FOR(i, 1, m, 1) cin >> b[i];
  37. // dp[0][0] = 1;
  38. for(int i = 1; i <= n; ++i){
  39. for(int j = 1; j <= m; ++j){
  40. if(a[i] == b[j]){
  41. dp[i][j] = dp[i - 1][j - 1] + 1;
  42. }
  43. else dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
  44. // ans = max(ans, dp[i][j]);
  45. }
  46. }
  47. cout << dp[n][m];
  48. }
  49.  
Success #stdin #stdout 0s 5308KB
stdin
Standard input is empty
stdout
Standard output is empty