Cod sursa(job #485397)

Utilizator bogfodorBogdan Fodor bogfodor Data 18 septembrie 2010 11:46:28
Problema Subsir crescator maximal Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>
#define Lg 100000

using namespace std;

int s1[Lg],s2[Lg],a[Lg],n,af[Lg];

int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d", &a[i]);
    int lg=0;
    for(int i=0;i<n;i++){
        int ok=0;
        for(int j=0;j<lg && ok==0 ;j++){
                if(s1[j]>=a[i]){
                    s1[j]=a[i];
                    s2[i]=lg;
                    ok=1;
                }

        }
        if(ok==0){
            s1[lg++]=a[i];
            s2[i]=lg;
        }
    }
    printf("%d\n", lg);
    int p=0;
    for(int i=n-1;i>=0 || lg==0;i--){
        if(s2[i]==lg){
            af[p++]=a[i];
            lg--;}
    }
    p--;
    for(int i=p-1;i>=0;i--)
        printf("%d " ,af[i]);
    return 0;
}