Cod sursa(job #3323595)

Utilizator magnifica5Tabarca Ioana magnifica5 Data 18 noiembrie 2025 20:05:21
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>
#define cin fin
#define cout fout
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int aux[100001], pvector[100001];
int main() {
   int n;
   cin >> n;
   int a[n + 1];
   for(int i = 1; i <= n; i ++){
       cin >> a[i];
   }
   int cnt = 1;
   aux[1] = a[1];
   pvector[1] = 1;
   for(int i = 2; i <= n; i ++){
       if(a[i] > aux[cnt]){
          cnt ++;
          aux[cnt] = a[i];
          pvector[i] = cnt;
       }
       else{
        int poz = lower_bound(aux + 1, aux + cnt + 1, a[i]) - aux;
        aux[poz] = a[i];
        pvector[i] = poz;
       }
   }
   cout << cnt << '\n';
   int fin[cnt + 1], j = n;
   for(int i = cnt; i >= 1; i --){
       while(pvector[j] != i){
          j --;
       }
       fin[i] = a[j];
   }
   for(int i = 1; i <= cnt; i ++)
       cout << fin[i] << ' ';
}