Advertisement
STANAANDREY

lisubseq

Sep 8th, 2019
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1.  
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. ifstream fin("file.in");
  6. ofstream fout("file.out");
  7.  
  8. #define NMAX 100005
  9. int v[NMAX], n, maxi, dp[NMAX], poz[NMAX], poz2;
  10.  
  11. void Read()
  12. {
  13.     fin >> n;
  14.     for (int i = 1; i <= n; i++)
  15.         fin >> v[i];
  16. }
  17.  
  18. void display(int p)
  19. {
  20.     if (!p)
  21.         return;
  22.     display(poz[p]);
  23.     fout << v[p] << ' ';
  24. }
  25.  
  26. int main()
  27. {
  28.     Read();
  29.     for (int i = 1; i <= n; i++)
  30.     {
  31.         dp[i] = 1;
  32.         for (int j = i - 1; j; j--)
  33.             if (v[j] < v[i])
  34.             {
  35.                 if (dp[i] < dp[j] + 1)
  36.                     {
  37.                         dp[i] = dp[j] + 1;
  38.                         poz[i] = j;
  39.                     }
  40.             }
  41.     }
  42.     for (int i = 1; i <= n; i++)
  43.         cout << dp[i]<<' ';
  44.  
  45.     for (int i = 1; i <= n; i++)
  46.     {
  47.         if (dp[i] > maxi)
  48.         {
  49.             maxi = dp[i];
  50.             poz2 = i;
  51.         }
  52.     }
  53.     fout << maxi << '\n';
  54.     display(poz2);
  55.     return EXIT_SUCCESS;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement