Pagini recente » Istoria paginii jc2018/runda-2 | Cod sursa (job #403850) | Cod sursa (job #1872078) | Cod sursa (job #1818971) | Cod sursa (job #1853691)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream fout("scmax.out");
const int NMAX=100000+5;
int a[NMAX], tata[NMAX], sol[NMAX], k, n, prim;
bool vis[NMAX];
void dinam()
{int i , j;
for (i = n-1 ; i > 0; --i)
{
for (j = i+1; j <= n; ++j)
{
if (a[i] < a[j] && sol[i]<sol[j]+1)
{
sol[i] = sol[j]+1;
tata[i] = j;
}
if(k<sol[i]) {k=sol[i];prim=i;}
}
}
}
int main()
{
f >> n;
for (int i = 1; i <= n; ++i)f >> a[i];
sol[n]=1;
dinam();
fout << k << "\n";
for (int i = prim; i > 0; i=tata[i])fout << a[i]<< " ";
return 0;
}