Cod sursa(job #360287)

Utilizator AndrewTheGreatAndrei Alexandrescu AndrewTheGreat Data 30 octombrie 2009 20:10:27
Problema Subsir crescator maximal Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>

using namespace std;

int s1[100002],s2[100002],a[100002],lg,n;

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

int main()
{
    freopen ("scmax.in","r",stdin);
    freopen ("scmax.out","w",stdout);
    citire();
    int lg=0,j,i;
    for(i=0;i<n;i++)
    {
        for(j=0;j<lg;j++)
            if(s1[j]>a[i])
            {
                s1[j]=a[i],s2[i]=j;
                break;
            }
        if(j==lg)s1[lg]=a[i],s2[i]=lg++;
    }
    cout<<lg<<endl;
    lg--;
    int k=0;
    int fin[100002];
    for(i=n-1;i>=0&&lg>=0;i--)
        if(s2[i]==lg)
        {
            fin[++k]=a[i];
            lg--;
        }
    while(k)
        cout<<fin[k--]<<" ";
    return 0;
}