Pagini recente » Cod sursa (job #1947983) | Cod sursa (job #2869860) | Cod sursa (job #2477930) | Cod sursa (job #2170698) | Cod sursa (job #3202047)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
const int NMAX = 1e6 + 1;
int n, v[NMAX], best[NMAX], last[NMAX], maxL, maxI, k;
vector<int> sol;
int main(){
fin >> n;
for(int i = 1; i <= n; i++) fin >> v[i], best[i] = 1, last[i] = i;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= i; j++)
if(v[j] < v[i] && best[j] + 1 > best[i]) {
best[i] = best[j] + 1, last[i] = j;
if(best[i] > maxL){
maxL = best[i];
maxI = i;
}
}
fout << maxL << '\n';
for(k = maxI; k != last[k]; k = last[k]) sol.push_back(v[k]);
sol.push_back(v[k]);
for(int i = sol.size() - 1; i >= 0; i--) fout << sol[i] << ' ';
return 0;
}