Pagini recente » Cod sursa (job #697560) | Cod sursa (job #1809444) | Cod sursa (job #952661) | Cod sursa (job #2147361) | Cod sursa (job #921791)
Cod sursa(job #921791)
#include <cstdio>
bool gasit;
int v[100010], p[100010], q[100010], i, j, v1[100010], last, n;
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]);
gasit=false;
for(j=1;j<=q[0];j++)
if(q[j]>v[i])
{
q[j]=v[i];
p[i]=j;
gasit=true;
break;
}
else
if(q[j]==v[i])
{
gasit=true;
break;
}
if(!gasit)
{
q[++q[0]]=v[i];
p[i]=q[0];
}
}
printf("%d\n", q[0]);
i=q[0]; last=n;
while(i>0)
{
for(j=last;j>=1;j--)
if(p[j]==i)
{
v1[++v1[0]]=v[last];
last=j-1;
i--;
break;
}
}
for(i=v1[0];i>=1;i--)
printf("%d ", v1[i]);
printf("\n");
return 0;
}