Cod sursa(job #2842479)

Utilizator albuAlbu Victor albu Data 31 ianuarie 2022 21:41:55
Problema Subsir crescator maximal Scor 30
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");
const int NMAX=1000;
int v[NMAX+2],lung[NMAX+2],poz[NMAX+2],n,lgmax,imax;
void maxim(int i,int &lgmax,int &imax)
{
  lgmax=0;
  imax=0;
  for(int j=i+1;j<=n;++j)
  {
    if(v[j]>v[i] && lgmax<lung[j]){
      lgmax=lung[j];
      imax=j;
    }
  }
}
int main()
{
    cin>>n;
    lung[n]=1;
    poz[n]=0;
    for(int i=1;i<=n;++i)
      cin>>v[i];
    for(int i=n-1;i>=1;--i)
    {
      maxim(i,lgmax,imax);
      lung[i]=lgmax+1;
      poz[i]=imax;
    }
    int indice=1;
    int maxi=lung[1];
    for(int i=2;i<=n;i++)
    {
      if(lung[i]>maxi)
      {
        maxi=lung[i];
        indice=i;
      }
    }
    cout<<maxi<<'\n';
    while(indice>0)
    {
      cout<<v[indice]<<" ";
      indice=poz[indice];
    }
    return 0;
}