Cod sursa(job #2573235)

Utilizator smoc_georgemarianSmoc George-Marian smoc_georgemarian Data 5 martie 2020 16:34:42
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
#define NMAX 100009
#define INF 2e9+1
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[NMAX];
int best[NMAX];
int ar[NMAX];
vector<int>sol;
int cate;
int n;
void citire();
int main()
{citire();
   return 0;
}
void citire()
{
  int i;
  fin>>n;
  for(i=1;i<=n;i++)
     fin>>v[i];
  best[1]=1;
  ar[1]=v[1];
  cate=1;
  for(i=2;i<=n;i++)
    {
     if(v[i]>ar[cate])
        {
         ar[++cate]=v[i];
         best[i]=cate;
        }
       else
       {
         int pos=lower_bound(ar+1,ar+cate+1,v[i])-ar;
         best[i]=pos;
         ar[pos]=v[i];
       }
    }
 fout<<cate<<'\n';
 sol.push_back(INF);
 for(i=n;i>=1 ;i--)
    {
     if(best[i]==cate && v[i]<sol[sol.size()-1])
        {
         sol.push_back(v[i]);cate--;
        }
    }
 for(i=sol.size()-1;i>=1;i--)
        fout<<sol[i]<<" ";
}