Pagini recente » Cod sursa (job #237554) | Cod sursa (job #2536051) | Cod sursa (job #2829785) | Cod sursa (job #2781696) | Cod sursa (job #354453)
Cod sursa(job #354453)
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
#define NMAX 100005
#define pb push_back
vector <int> A;
vector <int> V;
int N;
int X[NMAX],D[NMAX];
int main()
{
int i,a,j,max,poz;
freopen("scmax.in","rt",stdin);
freopen("scmax.out","wt",stdout);
scanf("%d",&N);
for (i=0;i<N;i++)
scanf("%d",&a), A.pb(a);
for (i=0;i<N;i++)
{
X[i] = 1;
D[i] = -1;
for (j=0;j<i;j++)
if ((X[j] + 1 > X[i]) && (A[j]<A[i]))
X[i] = X[j] + 1, D[i] = j;
}
max = X[0], poz = 0;
for (i=1;i<N;i++)
if (max < X[i])
max = X[i], poz = i;
printf("%d\n",max);
for (;poz!=-1;V.pb(A[poz]), poz = D[poz]);
for (i=V.size()-1; i>=0; printf("%d ",V[i]), i--);
return 0;
}