Cod sursa(job #485383)

Utilizator akaSoarePoepscu Bogdan Ionut akaSoare Data 18 septembrie 2010 11:04:34
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <cstdio>
using namespace std;

int a[100005],s1[100001],s2[100005],max,n,l,maxi,k[100005],k1;

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]);
    for (int i=0;i<n;i++)
    {
        max=2000000000;
        for (int j=0;j<=l;j++)
            if (s1[j]>=a[i])
                if (max>s1[j])
                {
                    max=s1[j];
                    maxi=j;
                }
        if (max==2000000000)
        {
            s1[l]=a[i];
            s2[i]=l;
            l++;
        }
        else
        {
            s1[maxi]=a[i];
            s2[i]=maxi;
        }
    }
    printf("%d\n",l);
    l--;
    for (int i=n-1;i>=0;i--)
        if (s2[i]==l)
        {
            k[k1]=a[i];
            k1++;
            //printf("%d ",a[i]);
            l--;
        }
    for (int i=k1-1;i>=0;i--)
        printf("%d ",k[i]);
    return 0;
}