Cod sursa(job #1124594)

Utilizator badea_adi1999Badea Adrian Catalin badea_adi1999 Data 26 februarie 2014 12:52:46
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <cstdio>
using namespace std;
FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");
int v[100001],t[100001],b[100001],maxim,pos,sol[100001];
int main()
{int n,i,j;
fscanf(f,"%d",&n);
for (i=1;i<=n;i++) fscanf(f,"%d",&v[i]);
for (i=1;i<=n;i++) {b[i]=1;
                    for (j=i-1;j>=1;j--) if (v[i]>v[j]&&b[j]>=b[i]) {b[i]=b[j]+1;
                                                                     t[i]=j;
                                                                     }
                    }
for (i=n;i>=1;i--) if (b[i]>maxim) {maxim=b[i];pos=i;}
while (pos!=0) {sol[b[pos]]=pos;
                pos=t[pos];
                }
fprintf(g,"%d\n",maxim);
for (i=1;i<=maxim;i++) fprintf(g,"%d ",v[sol[i]]);
fprintf(g,"\n");
return 0;
}