Cod sursa(job #2145998)

Utilizator marcogoldPop Mihali Marco Silviu marcogold Data 27 februarie 2018 18:57:37
Problema Subsir crescator maximal Scor 45
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fi("scmax.in");
ofstream fo("scmax.out");

int n,a[100010],dp[100010],lungime,inceput,parinte[100010];



void afisare(int x)
{
    if(x)
    {
        afisare(parinte[x]);
        fo<<a[x]<<" ";
    }
}

int main()
{

    fi>>n;

    for(int i=1;i<=n;i++)
        fi>>a[i];

for(int i=1;i<=n;i++)
    dp[i]=1;


      for(int i=2;i<=n;i++)
      {
          for(int j=1;j<i;j++)
            if(a[j]<a[i])
          {
              dp[i]=max(dp[i],dp[j]+1);
                parinte[i]=j;

                if(dp[i]<dp[j]+1)
                {
                    dp[i]=dp[j]+1;


                }

          }
      }

       for(int i=1;i<=n;i++)
       {
           if(dp[i]>lungime)
           {
               lungime=dp[i];
               inceput=i;
           }

       }


       fo<<lungime<<endl;

    afisare(inceput);



    fi.close();
    fo.close();
    return 0;
}