Cod sursa(job #792192)

Utilizator cristitamasTamas Cristian cristitamas Data 26 septembrie 2012 18:22:38
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <cstdio>
using namespace std;

long long int sir[100005];
int best[100005];
int nrel,poz,n;

void citire(){
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&sir[i]);
}

void rezolvare(){
    int max;
    for(int i=0;i<n;i++){
        max=0;
        for(int j=i-1;j>=0;j--){
            if(sir[i]>sir[j] && best[j]>max)
                max=best[j];
        }
        best[i]=max+1;
        if(best[i]>nrel){
            nrel=best[i];
            poz=i;
        }
    }
    printf("%d\n",nrel);
}

void afisare(int poz){
    for(int i=poz-1;i>=0;i--){
        if(best[i]==best[poz]-1 && sir[i]<sir[poz]){
            afisare(i);
            //printf("%d ",sir[poz]);
            break;
        }
    }
    printf("%d ",sir[poz]);
}


int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    citire();
    rezolvare();
    afisare(poz);
    return 0;
}