Pagini recente » Cod sursa (job #2087847) | Cod sursa (job #3260470) | Cod sursa (job #3176586) | Cod sursa (job #199282) | Cod sursa (job #868675)
Cod sursa(job #868675)
#include<cstdio>
#include<algorithm>
using namespace std;
int *it2,*it,n,q[100010],p[100010],v[100010],l,i,cl,sol[100010];
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&v[i]);
}
for(i=0;i<n;i++)
{
//daca e egal
it2=lower_bound(q,q+l,v[i]);
if(*it2==v[i]&&it!=q+l)
continue;
else
{
it=upper_bound(q,q+l,v[i]);
if(it==q+l)
{
q[l]=v[i];
l++;
p[i]=l;
}
else
{
*it=v[i];
p[i]=it-q+1;
}
}
}
printf("%d\n",l);
cl=l;
while(l>0)
{
for(i=n-1;i>=0;i--)
{
if(p[i]==l)
{
sol[l]=v[i];
break;
}
}
l--;
}
for(i=1;i<=cl;i++)
printf("%d ",sol[i]);
return 0;
}