Cod sursa(job #1361891)

Utilizator Flor1nC23Condrovici Florin Flor1nC23 Data 26 februarie 2015 00:57:13
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,v[100003],sm[100003],aux[100003];
void citire()
{int i;
f>>n;
for(i=1;i<=n;i++)f>>v[i];

}
void sol()
{ sm[n]=1;
  aux[0]=2000000001;
  aux[1]=v[n];
  int i,l=1,val;
  for(i=n-1;i;i--)
  {
       int t=l;
      while(v[i]>=aux[t])t--;
      sm[i]=t+1;
      aux[sm[i]]=max(v[i],aux[sm[i]]);
      if(l<sm[i])
      l=sm[i];
  }
  val=0;
  g<<l<<endl;
  for(i=1;i<=n;i++)
  if(sm[i]==l&&v[i]>val)
  {g<<v[i]<<" ";l--;val=v[i];}

}
int main()
{
    citire();
    sol();
        return 0;
}