Mai intai trebuie sa te autentifici.

Cod sursa(job #2265046)

Utilizator vladisimovlad coneschi vladisimo Data 20 octombrie 2018 15:49:02
Problema Subsir crescator maximal Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <cstdio>
#include <list>
#include <set>

int main() {
  freopen("scmax.in", "r", stdin);
  freopen("scmax.out", "w", stdout);
  int n;
  scanf("%d", &n);
  int a[2 + n];
  for (int i = 1; i <= n; i++)
    scanf("%d", &a[i]);
  std::set<int> ord;
  int pos[2 + n];
  pos[1] = 1;
  ord.insert(a[1]);
  for (int i = 2; i <= n; i++) {
    auto it = ord.lower_bound(a[i]);
    if (it != ord.end()) {
      ord.erase(it);
      ord.insert(a[i]);
      //pos[i] = std::distance(ord.begin(), it) + 1;
    } else {
      ord.insert(a[i]);
     // pos[i] = ord.size();
    }
  }
  printf("%d\n", ord.size());
  std::list<int> show;
 /* int val = ord.size(), i = n;
  while (i > 0 && val > 0) {
    if (pos[i] == val) {
      val--;
      show.push_front(i);
    }
    i--;
  }
  for (int i : show)
    printf("%d ", a[i]);*/
  return 0;
}