Cod sursa(job #2320374)

Utilizator MirunaStefaniaLupascu Miruna-Stefania MirunaStefania Data 14 ianuarie 2019 18:14:12
Problema Subsir crescator maximal Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.68 kb
#include <bits/stdc++.h>
#define N 100005
using namespace std;
ifstream  fin("scmax.in");
ofstream fout("scmax.out");

int n,a[N];
int lg[N],t[N];

void read()
{int i;
 fin>>n;
 for(i=1;i<=n;++i)fin>>a[i];
}

void f(int x)
{if(t[x]!=0)f(t[x]);
 fout<<a[x]<<" ";
}

void solve()
{int i,imax,lgmax=0,j;
 lg[1]=1;t[1]=0;
 for(i=2;i<=n;++i)
 {lg[i]=1;t[i]=0;
  for(j=1;j<i;++j)
    if(a[j]<a[i]&&lg[j]+1>lg[i])
  {lg[i]=lg[j]+1;
   t[i]=j;
  }
 }
  for(i=1;i<=n;++i)
    if(lg[i]>lgmax)
  {lgmax=lg[i];
   imax=i;
  }


  for(i=1;i<=n;++i)
    cout<<lg[i]<<" ";

  fout<<lgmax<<"\n";
  f(imax);


}

int main()
{   read();
    solve();
    return 0;
}