Cod sursa(job #298385)

Utilizator andreivFMI - vacaroiu andrei andreiv Data 6 aprilie 2009 00:23:11
Problema Subsir crescator maximal Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <stdio.h>
int main()
{long long int pozi,n,poz,i,k,v[100000],nr[100000],max,j;
 int q[100000];

freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%lld",&n);
for (i=1;i<=n;i++) scanf("%lld",&v[i]);
max=0;
for (i=1;i<=n;i++) 
  { k=0;q[i]=0; for (j=1;j<i;j++) if ((v[j]<v[i])  && (nr[j]>k)) { k=nr[j]; q[i]=j;}
    nr[i]=k+1;
	if (nr[i]>max) { max=nr[i]; poz=i; }
   } 

printf("%lld\n",max);
for (;q[poz];) {printf("%ld ",v[poz]);poz=q[poz];}printf("%ld",v[poz]);



/*n=max;
for (i=2;i<=n;i++) 
    { k=0;
	  for (j=1;j<poz; j++) if ((v[j]<v[poz])  && (nr[j]>k)){ k=nr[j];max=j;}
      //printf("%lld ",v[max]);
	  q[i]=v[max];
	  poz=max;
	}  
for (i=n;i>=1;i--) printf("%lld ",q[i]);*/

/*q[1]=100000;
printf("%d",q[1]);*/

return 0;}