Cod sursa(job #1817238)

Utilizator edi_laitinLaitin Eduard edi_laitin Data 27 noiembrie 2016 15:25:21
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int a[100005],n,DP[100005],Sol1[100005],Max,Sol[100005];

void Read()
{
fin>>n;
 for(int i=1;i<=n;i++)
 fin>>a[i];
}
void Solve()
{
    int x=0,poz;
  for(int i=1;i<=n;i++)
       {
           x=0;
        for(int j=1;j<=i;j++)
            {
               if(a[i]>a[j])
                {
                    if(x<DP[j])
                    {
                        x=DP[j];
                        Sol[i]=j;
                    }
                }
            }
          DP[i]=x+1;
       }
   for(int i=1;i<=n;i++)
       {
           if(Max<DP[i])
           {
               Max=DP[i];
               poz=i;
           }
       }
   fout<<Max<<"\n";
   int Max1=Max;
   while(poz)
 {
    Sol1[Max]=a[poz];
     Max--;
     poz=Sol[poz];
 }
 for(int i=1;i<=Max1;i++)
    fout<<Sol1[i]<<" ";

}
int main()
{
  Read();
   Solve();
  return 0;
}