Cod sursa(job #1166827)

Utilizator andreimdvMoldovan Andrei andreimdv Data 3 aprilie 2014 20:50:42
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
//Subsir crescator maximal-progamare dinamica-70pct O(n*n)

#include<fstream>
using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

int n,i,v[100002],q[100002],aux,p[100002],lung,j;

int main()
{
    fin>>n;
    fin>>v[1];
    q[1]=v[1];
    p[1]=1;
    lung=1;
    for(i=2;i<=n;++i)
    {
        fin>>v[i];
        for(j=lung;j;--j)
        if(q[j]>=v[i]&&q[j-1]<v[i])
        {
            q[j]=v[i];
            p[i]=j;
            break;
        }
        if(p[i]==0)
        {
            p[i]=lung+1;
            q[++lung]=v[i];
        }
    }
    fout<<lung<<'\n';
    aux=lung;
    for(i=n;aux;--i)
    {
        if(p[i]==aux)
        {
            q[aux]=v[i];
            aux--;
        }
    }
    for(i=1;i<=lung;++i)
    fout<<q[i]<<" ";
    return 0;
}