Cod sursa(job #318733)
Utilizator | Pal George Catalin georgepal | Data | 29 mai 2009 09:22:06 |
---|---|---|---|
Problema | Subsir 2 | Scor | 24 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.88 kb |
#include<stdio.h>
int main()
{
long long x[100003],a[100003],c[100003];
long long p,max,i,k,n;
FILE*f,*g;
f=fopen("subsir2.in","r");
g=fopen("subsir2.out","w");
fscanf(f,"%lld",&n);
for(i=1;i<=n;i++)
fscanf(f,"%lld",&x[i]);
max=1;p=n;c[n]=1;
for(k=n-1;k>0;k--)
{
c[k]=1;a[k]=0;
for(i=k+1;i<=n;++i)
if(x[i]>x[k])
if(c[i]+1>c[k])
{c[k]=c[i]+1;a[k]=i;}
if(c[k]>max)
{max=c[k];p=k;}
}
fprintf(g,"%lld\n%lld ",max,x[p]);
for(i=1;i<max;i++)
{p=a[p];
fprintf(g,"%lld ",x[p]);
}
fcloseall();
return 0;
}