Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <algorithm>
  4. #include <cstring>
  5. using namespace std;
  6.  
  7. struct Ans{
  8.     int maxSub;
  9.     int prev;
  10. };
  11.  
  12. int main() {
  13.     int n;
  14.     cin >> n;
  15.     int a[n];
  16.     for (int i = 0; i < n; ++i){
  17.         cin >> a[i];
  18.     }
  19.     Ans m[n];
  20.     for (int i = 0; i < n; ++i){
  21.         m[i].prev = -1;
  22.         m[i].maxSub = 1;
  23.         for (int j = 0; j < i; ++j){
  24.             if (a[i] > a[j] && m[i].maxSub <= m[j].maxSub){
  25.                 m[i].maxSub = m[j].maxSub + 1;
  26.                 m[i].prev = j;
  27.             }
  28.         }
  29.     }
  30.     int numOfMax = 0;
  31.     for (int i = 1; i < n; ++i){
  32.         if (m[i].maxSub > m[numOfMax].maxSub) numOfMax = i;
  33.     }
  34.     int answer[m[numOfMax].maxSub], curr = numOfMax;
  35.     for (int i = m[numOfMax].maxSub - 1; i >= 0; --i){
  36.         answer[i] = a[curr];
  37.         curr = m[curr].prev;
  38.     }
  39.     for (int i = 0; i < m[numOfMax].maxSub; ++i){
  40.         cout << answer[i] << " ";
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement