Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <string>
- #include <set>
- using namespace std;
- int main() {
- int n;
- cin >> n;
- vector<int> v(n + 1);
- for (int i = 1; i <= n; i++) {
- cin >> v[i];
- }
- v[0] = -10100;
- vector<int> dp(n + 1, -1), last(n + 1, -1);
- dp[0] = 0;
- for (int i = 1; i <= n; i++) {
- for (int j = 0; j < i; j++) {
- if (v[j] < v[i] && dp[j] + 1 > dp[i]) {
- dp[i] = dp[j] + 1;
- last[i] = j;
- }
- }
- }
- int ans = 0, ind = 0;
- for (int i = 0; i <= n; i++) {
- if (dp[i] > ans) {
- ans = dp[i];
- ind = i;
- }
- }
- vector<int> res;
- for (int i = 0; i < ans; i++) {
- res.push_back(v[ind]);
- ind = last[ind];
- }
- for (int i = 0; i < res.size(); i++) {
- cout << res[res.size() - 1 - i] << ' ';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement