Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <string>
  5. #include <set>
  6.  
  7. using namespace std;
  8.  
  9. int main() {
  10.     int n;
  11.     cin >> n;
  12.     vector<int> v(n + 1);
  13.     for (int i = 1; i <= n; i++) {
  14.         cin >> v[i];
  15.     }
  16.     v[0] = -10100;
  17.     vector<int> dp(n + 1, -1), last(n + 1, -1);
  18.     dp[0] = 0;
  19.     for (int i = 1; i <= n; i++) {
  20.         for (int j = 0; j < i; j++) {
  21.             if (v[j] < v[i] && dp[j] + 1 > dp[i]) {
  22.                 dp[i] = dp[j] + 1;
  23.                 last[i] = j;
  24.             }
  25.         }
  26.     }
  27.     int ans = 0, ind = 0;
  28.     for (int i = 0; i <= n; i++) {
  29.         if (dp[i] > ans) {
  30.             ans = dp[i];
  31.             ind = i;
  32.         }
  33.     }
  34.     vector<int> res;
  35.     for (int i = 0; i < ans; i++) {
  36.         res.push_back(v[ind]);
  37.         ind = last[ind];
  38.     }
  39.     for (int i = 0; i < res.size(); i++) {
  40.         cout << res[res.size() - 1 - i] << ' ';
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement