Cod sursa(job #2204402)

Utilizator testsursaSurseTest testsursa Data 15 mai 2018 18:05:39
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <fstream>

using namespace std;
int v[100005],dp[100005];
int t[100005],sol[100005],k;
int i,n;

ifstream cin("scmax.in");
ofstream cout("scmax.out");
void reconst(int curr)
{
    if(t[curr]!=0)
        reconst(t[curr]);
    cout<<v[curr]<<" ";
}

int main()
{
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>v[i];
    t[1]=0;
    for(i=1;i<=n;i++)
    {
        int mx=0;
        int pos=0;
        for(int j=1;j<i;j++)
        {
            if(v[j]<v[i])
            {
               if(dp[j]>mx){
                    mx=dp[j];
                    pos=j;
               }
            }
        }
        dp[i]=1+mx;
        t[i]=pos;
    }
    int mx=0;
    int pos=0;
    for(int i=1;i<=n;i++)
        {
          if(dp[i]>mx){
            mx=dp[i];
            pos=i;
          }
        }

    //reconst(pos);
    int cnt=mx;
    cout<<mx<<endl;
    for(i=n;i>0;i--)
    {
        if(dp[i]==cnt)
           {
               sol[++k]=v[i];
               cnt--;
           }
    }

    for(int i=k;i>=1;i--)
        cout<<sol[i]<<" ";

    return 0;
}