Pagini recente » Cod sursa (job #2765067) | Cod sursa (job #2034826) | Cod sursa (job #838776) | Rating Bataus Alin Alexandru (BAlin245) | Cod sursa (job #507870)
Cod sursa(job #507870)
#include<stdio.h>
FILE * f=freopen("scmax.in","r",stdin);
FILE * g=freopen("scmax.out","w",stdout);
int M[100001],subs[100001],vect[100001];
int n,k;
void subsir()
{
subs[n]=1;int i=n-1,j;
while(i>=1)
{
for(j=i+1;j<=n;j++)
if(M[i]<M[j])
{
subs[i]=subs[j]+1;
j=n+2;
}
if(j==n+1)
subs[i]=1;
i--;
}
}
void procesare()
{
int max=subs[1],poz=1;int i;k=1;
for(i=2;i<=n;i++)
if(max<subs[i])
{
max=subs[i];
poz=i;
}
vect[k]=M[poz];
i=poz+1;
while(max!=1)
{
while(max-1!=subs[i] || M[poz]>=M[i])
i++;
k++;vect[k]=M[i];poz=i;max--;
}
}
int main()
{
int i; scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&M[i]);
subsir();
procesare();
printf("%d\n",k);
for(i=1;i<=k;i++)
printf("%d ",vect[i]);
return 1;
}