Pagini recente » Cod sursa (job #1757432) | Cod sursa (job #3213723) | Cod sursa (job #611088) | Cod sursa (job #940292) | Cod sursa (job #877423)
Cod sursa(job #877423)
#include<cstdio>
#include<algorithm>
using namespace std;
const int INF = (1<<31)-1;
const int NMAX = 100005;
int n,i,x,V[NMAX],Q[NMAX],P[NMAX],poz,SOL,S[NMAX];
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&V[i]); x=V[i];
Q[i]=INF;
poz=lower_bound(Q+1,Q+i+1,x)-Q;
Q[poz]=x;
P[i]=poz;
SOL=max(SOL,poz);
}
printf("%d\n",SOL);
for(poz=SOL,i=n;i && poz;i--)
if(P[i]==poz)
S[poz--]=V[i];
for(i=1;i<=SOL;i++) printf("%d ",S[i]);
return 0;
}