Pagini recente » Cod sursa (job #423068) | Cod sursa (job #667979) | Cod sursa (job #2055518) | Cod sursa (job #1921453) | Cod sursa (job #1009814)
#include <cstdio>
#include <algorithm>
#define N 100001
using namespace std;
int a[N], b[N], lg[N], sol[N];
int k=1;
int bs(int n)
{
if(n>b[k]) return ++k;
return lower_bound(b+1, b+k+1, n)-b;
}
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
int n, i, p;
scanf("%d", &n);
for(i=1;i<=n;i++)
{
scanf("%d", &a[i]);
}
b[1]=a[1];lg[1]=1;
for(i=2;i<=n;i++)
{
p=bs(a[i]);
b[p]=a[i];
lg[i]=p;
}
printf("%d\n", k);
for(i=n, p=k;i&&p;i--)
{
if(lg[i]==p)
{
sol[p]=a[i];
p--;
}
}
for(i=1;i<=k;i++)
{
printf("%d ", sol[i]);
}
}