Cod sursa(job #822954)

Utilizator Master011Dragos Martac Master011 Data 24 noiembrie 2012 12:17:18
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<cstdio>
#define MAX 100001
using namespace std;
FILE *fin,*fout;
int v[MAX],l[MAX];
int main(){
    fin=fopen("scmax.in","r");
    fout=fopen("scmax.out","w");
    int n;
    fscanf(fin,"%d",&n);
    int i;
    for(i=1;i<=n;i++)
        fscanf(fin,"%d",&v[i]);
    int max;
    l[n]=1;
    max=v[n];
    int j,maxm=-1;
    for(i=n-1;i>=1;i--){
        max=-1;
        for(j=i+1;j<=n;j++)
            if((v[j]>v[i])&&(l[j]>max))
                max=l[j];
        if(max==-1)
            l[i]=1;
        else
            l[i]=max+1;
        if(l[i]>maxm)
                maxm=l[i];
    }
    fprintf(fout,"%d\n",maxm);
    i=1;
    while(maxm>0){
        if(l[i]==maxm){
            fprintf(fout,"%d ",v[i]);
            maxm--;
        }
        i++;
    }
    fclose(fin);
    fclose(fout);
    return 0;
}