Pagini recente » Cod sursa (job #2155693) | Cod sursa (job #1725950) | Cod sursa (job #744414) | Cod sursa (job #2123145) | Cod sursa (job #740053)
Cod sursa(job #740053)
#include<cstdio>
using namespace std;
int a[100100],st[100100],pos[100100],i,n,mx,prev,lg;
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
a[0]=-1;
st[1]=a[1];
pos[1]=1;
lg=1;
for (i=2;i<=n;i++)
{
while (a[i]<=st[lg])
{
lg--;
}
lg++;
st[lg]=a[i];
pos[i]=lg;
}
for (i=1;i<=n;i++)
{
if (pos[i]>mx)
{
mx=pos[i];
prev=i;
}
}
printf("%d\n",mx);
st[mx]=a[prev];
for (i=prev-1;i>=1;i--)
{
if (pos[i]==pos[prev]-1&&a[i]<a[prev])
{
st[pos[i]]=a[i];
prev=i;
}
}
for (i=1;i<=mx;i++)
{
printf("%d ",st[i]);
}
printf("\n");
return 0;
}