Guest User

Untitled

a guest
May 23rd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.72 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <vector>
  4. #include <map>
  5. #include <string>
  6. #include <cstring>
  7. #include <set>
  8. #include <queue>
  9. #include <stack>
  10. #include <bitset>
  11. #include <algorithm>
  12. #include <cstdio>
  13. #include <cstdlib>
  14. #include <cmath>
  15.  
  16. using namespace std;
  17.  
  18. #pragma comment (linker, "/stack:250000000")
  19.  
  20. #define MAXN 5010
  21.  
  22. int main()
  23. {
  24.     freopen("input.txt", "r", stdin);
  25.     freopen("output.txt", "w", stdout);
  26.  
  27.     int n, m, i, j, k, a[MAXN], b[MAXN], len[MAXN][MAXN] = {}, mx[MAXN][MAXN] = {};
  28.    
  29.     cin >> n >> m;
  30.    
  31.     for (i = 1; i <= n; i++)
  32.         cin >> a[i];
  33.  
  34.     for (i = 1; i <= m; i++)
  35.         cin >> b[i];
  36.  
  37.     for (i = 1; i <= n; i++)
  38.         for (j = 1; j <= m; j++)
  39.             if (a[i] == b[j])
  40.             {
  41.                 if (a[i] > mx[i-1][j-1])
  42.                 {
  43.                     mx[i][j] = a[i];
  44.                     len[i][j] = len[i-1][j-1] + 1;
  45.                 }
  46.                 else
  47.                     if (len[i-1][j] > len[i][j-1])
  48.                     {
  49.                         mx[i][j] = mx[i-1][j];
  50.                         len[i][j] = len[i-1][j];
  51.                     }
  52.                     else if (len[i-1][j] < len[i][j-1])
  53.                     {
  54.                         mx[i][j] = mx[i][j-1];
  55.                         len[i][j] = len[i][j-1];
  56.                     }
  57.                     else if (mx[i-1][j] < mx[i][j-1])
  58.                     {
  59.                         mx[i][j] = mx[i-1][j];
  60.                         len[i][j] = len[i-1][j];
  61.                     }
  62.                     else
  63.                     {
  64.                         mx[i][j] = mx[i][j-1];
  65.                         len[i][j] = len[i][j-1];
  66.                     }
  67.             }
  68.             else
  69.                 if (len[i-1][j] > len[i][j-1])
  70.                 {
  71.                     mx[i][j] = mx[i-1][j];
  72.                     len[i][j] = len[i-1][j];
  73.                 }
  74.                 else if (len[i-1][j] < len[i][j-1])
  75.                 {
  76.                     mx[i][j] = mx[i][j-1];
  77.                     len[i][j] = len[i][j-1];
  78.                 }
  79.                 else if (mx[i-1][j] < mx[i][j-1])
  80.                 {
  81.                     mx[i][j] = mx[i-1][j];
  82.                     len[i][j] = len[i-1][j];
  83.                 }
  84.                 else
  85.                 {
  86.                     mx[i][j] = mx[i][j-1];
  87.                     len[i][j] = len[i][j-1];
  88.                 }
  89.  
  90.     cout << len[n][m];
  91.  
  92.     return 0;
  93. }
Add Comment
Please, Sign In to add comment