Pagini recente » Cod sursa (job #2942064) | Cod sursa (job #397390) | Cod sursa (job #2817528) | Cod sursa (job #153282) | Cod sursa (job #2674038)
//
// main.cpp
// scmax
//
// Created by Toie Vlad on 18/11/2020.
//
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
vector<int> lis(vector<int> const& a) {
int n = a.size();
vector<int> d(n, 1), p(n, -1);
for (int i = 0; i < n; i++) {
for (int j = 0; j < i; j++) {
if (a[j] < a[i] && d[i] < d[j] + 1) {
d[i] = d[j] + 1;
p[i] = j;
}
}
}
int ans = d[1], pos = 0;
for (int i = 1; i < n; i++) {
if (d[i] > ans) {
ans = d[i];
pos = i;
}
}
vector<int> subseq;
while (pos != -1) {
subseq.push_back(a[pos]);
pos = p[pos];
}
reverse(subseq.begin(), subseq.end());
return subseq;
}
int main(int argc, const char * argv[]) {
int n, val;
vector<int> v;
fin>>n;
while(n>0) {
fin>>val;
v.push_back(val);
n--;
}
v = lis(v);
fout<<v.size()<<endl;
for(auto i = v.begin(); i!=v.end(); i++) {
fout<<*i<<" ";
}
fout<<endl;
return 0;
}