Cod sursa(job #298387)

Utilizator andreivFMI - vacaroiu andrei andreiv Data 6 aprilie 2009 00:31:23
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 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 (i=max;q[poz];i--) {nr[i]=v[poz];poz=q[poz];}nr[1]=v[poz];

for (i=1;i<=max;i++) printf("%ld ",nr[i]); 

/*q[1]=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]);
*/
return 0;}