Cod sursa(job #2500590)

Utilizator ioana0211Ioana Popa ioana0211 Data 28 noiembrie 2019 12:06:31
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
long long nr[100001], s[100001], prec[100001], nrf[100001];
int main()
{
   int n, Max;
   fin>>n;
   for(int i=1; i<=n; i++)
    fin>>nr[i];
   for(int i=1; i<=n; i++)
   {
       Max=0;
       for(int j=1; j<i; j++)
        if(nr[j]<nr[i] && s[j]>Max)
        {
             Max=s[j];
             prec[i]=j;
        }

       s[i]=Max+1;
   }
   Max=0;
   int poz_max=0;
   for(int i=1; i<=n; i++)
    if(Max<s[i])
    {
        Max=s[i];
        poz_max=i;
    }
    //nrf[++nrf[0]]=nr[poz_max];
    while(prec[poz_max]!=0)
    {
        nrf[++nrf[0]]=nr[poz_max];
        poz_max=prec[poz_max];
    }
     nrf[++nrf[0]]=nr[poz_max];
    /*for(int i=1; i<=n; i++)
        cout<<prec[i]<<" ";*/
   fout<<Max<<"\n";
   for(int i=nrf[0]; i>=1; i--)
    fout<<nrf[i]<<" ";

    return 0;
}