fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define ll long long
  6. #define FOR(i , a , b) for(int i = a ; i <= b; i++)
  7. #define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  8. #define maxn 200005
  9.  
  10. int a[maxn] , b[maxn] , dp[maxn][2];
  11.  
  12. int main(){
  13. FAST;
  14. int n , m;
  15. cin >> n >> m;
  16. FOR(i , 1 , n) cin >> a[i];
  17. FOR(i ,1 , m) cin >> b[i];
  18.  
  19. FOR(i , 1 , n){
  20. int best_less = 0;
  21. int best_greater = 0;
  22. FOR(j , 1 , m){
  23. if(b[j] < a[i]){
  24. if(best_less < dp[j][1]) best_less = dp[j][1];
  25. }
  26.  
  27. else if(b[j] > a[i]){
  28. if(best_greater < dp[j][0]) best_greater = dp[j][0];
  29. }
  30.  
  31. else{
  32. if(dp[j][0] < 1) dp[j][0] = 1;
  33. if(dp[j][1] < 1) dp[j][1] = 1;
  34. if(best_less > 0) dp[j][0] = max(dp[j][0] , best_less + 1);
  35. if(best_greater > 0) dp[j][1] = max(dp[j][1] , best_greater + 1);
  36. }
  37. }
  38. }
  39.  
  40. int ans = 0;
  41. FOR(i , 1 , m) ans = max({ans , dp[i][0] , dp[i][1]});
  42. if(ans < 3) cout << 0;
  43. else cout << ans;
  44. }
Success #stdin #stdout 0s 5612KB
stdin
7 6
1 3 5 4 6 2 3
1 2 5 4 3 6
stdout
4