Cod sursa(job #698796)

Utilizator DanFodorFODOR Dan Horatiu DanFodor Data 29 februarie 2012 16:04:49
Problema Subsir crescator maximal Scor 45
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>

using namespace std;
int bst[100069],smax[100069];
int main()
{
    int i,j,n,max,sir[100069];
    ifstream in ("scmax.in");
    ofstream out ("scmax.out");
    in>>n;
    for (i=1;i<=n;i++)
    in>>sir[i];
    bst[1]=1;
    for (i=2;i<=n;i++)
    {
        max=0;
        for (j=i-1;j>=1;j--)
        {
            if (max<=bst[j])
            {
                if (sir[i]>sir[j])
                {
                    bst[i]=bst[j]+1;
                    max=bst[j];
                }
            }
        }
        if (bst[i]==0)
        bst[i]=1;
    }
    max=1;
    for (i=1;i<=n;i++)
    {
        if (bst[i]>max)
            max=bst[i];
    }
    out<<max<<"\n";
    for (i=1;i<=n;i++)
        smax[bst[i]]=sir[i];
    for (i=1;i<=max;i++)
        out<<smax[i]<<" ";
    return 0;
}