Pagini recente » Cod sursa (job #1430706) | Cod sursa (job #1104102) | Cod sursa (job #232517) | Cod sursa (job #546661) | Cod sursa (job #1165486)
#include <algorithm>
#include <cstdio>
using namespace std;
const int N=100005;
int a[N], b[N], nxt[N], poz[N];
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
int n, m=0, i, j, sol=0, solp;
scanf("%d", &n);
for(i=1;i<=n;i++) scanf("%d", &a[i]);
for(i=1;i<=n;i++)
{
j=lower_bound(b+1, b+sol+1, a[i])-b;
if(j>sol)
{
sol=j;
solp=i;
}
b[j]=a[i];
poz[j]=i;
nxt[i]=poz[j-1];
}
printf("%d\n", sol);
for(i=solp;i;i=nxt[i]) b[++m]=a[i];
for(i=m;i;i--) printf("%d ", b[i]);
}