Cod sursa(job #314746)

Utilizator andrici_cezarAndrici Cezar andrici_cezar Data 12 mai 2009 20:40:13
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.41 kb
#include<stdio.h>   
FILE *f,*g;   
long n,a[100001],lg[100001],urm[100001],max,tt,maxm,t,j,i;   
int main()   
{   
f=fopen("scmax.in","rt");   
g=fopen("scmax.out","wt");   
fscanf(f,"%ld\n",&n);   
for (i=1;i<=n;i++)   
    fscanf(f,"%ld\n",&a[i]);   
lg[n]=1;   
urm[n]=0;   
for (i=n-1;i>=1;i--)   
    {   
    max=0;   
    t=n;   
    for (j=n;j>i;j--)   
        if (a[i]<a[j] && lg[j]>max) {max=lg[j];t=j;}   
    lg[i]=max+1;   
    if (lg[i]>maxm) { maxm=lg[i];tt=i;}   
    urm[i]=t;   
    }   
fprintf(g,"%ld\n",maxm);   
for (i=1;i<=maxm;i++)   
    {   
    fprintf(g,"%ld ",a[tt]);   
    tt=urm[tt];   
    }   
fprintf(g,"\n");   
fclose(f);   
fclose(g);   
return 0; #include<stdio.h>   
FILE *f,*g;   
long n,a[100001],lg[100001],urm[100001],max,tt,maxm,t,j,i;   
int main()   
{   
f=fopen("scmax.in","rt");   
g=fopen("scmax.out","wt");   
fscanf(f,"%ld\n",&n);   
for (i=1;i<=n;i++)   
    fscanf(f,"%ld\n",&a[i]);   
lg[n]=1;   
urm[n]=0;   
for (i=n-1;i>=1;i--)   
    {   
    max=0;   
    t=n;   
    for (j=n;j>i;j--)   
        if (a[i]<a[j] && lg[j]>max) {max=lg[j];t=j;}   
    lg[i]=max+1;   
    if (lg[i]>maxm) { maxm=lg[i];tt=i;}   
    urm[i]=t;   
    }   
fprintf(g,"%ld\n",maxm);   
for (i=1;i<=maxm;i++)   
    {   
    fprintf(g,"%ld ",a[tt]);   
    tt=urm[tt];   
    }   
fprintf(g,"\n");   
fclose(f);   
fclose(g);   
return 0;   
}