Pagini recente » Cod sursa (job #9770) | Cod sursa (job #1471225) | Cod sursa (job #802495) | Cod sursa (job #1903921) | Cod sursa (job #1113610)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define nMax 100005
const int INF=(1<<31)-1;
int N,A[nMax],Q[nMax],p[nMax],SOL,S[nMax];
int main()
{
freopen("scmax.in","r",stdin);
scanf("%d",&N);
register int poz;
for(register int i=1;i<=N;++i){
scanf("%d",&A[i]);
Q[i]=INF;
poz= lower_bound( Q+1 , Q+i+1 , A[i] ) - Q;
Q[poz] = A[i]; p[ i ] = poz;
SOL=max(SOL,poz);
}
freopen("scmax.out","w",stdout);
int i;
for(poz=SOL, i=N;i && poz;i--)
if(p[i]==poz) S[poz--]=A[i];
printf("%d\n",SOL);
for(i=1;i<=SOL;i++) printf("%d ",S[i]);
return 0;
}