Cod sursa(job #2883096)

Utilizator MatyPopescu Matei Alexandru Maty Data 1 aprilie 2022 10:21:25
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <algorithm>
#define NMAX 100000
#define VALMAX 2000000000
#define INF 2100000000

using namespace std;

ifstream cin ("scmax.in");
ofstream cout ("scmax.out");

int vlastval[NMAX + 1]; /// vlastval[i] -- valoarea in care subsirul crescator de lungimea i se opreste

int main() {
  int n, val, i, j, poz, scmax;
  cin >> n;

  vlastval[0] = -INF;
  for (i = 1; i <= n; i++)
    vlastval[i] = INF;

  for (i = 0; i < n; i++) {
    cin >> val;

    poz = upper_bound(vlastval, vlastval + n + 1, val) - vlastval;
    if (vlastval[poz] > val && val > vlastval[poz - 1]) {
      vlastval[poz] = val;
      scmax = max(scmax, poz);
    }
  }

  cout << scmax << "\n";
  for (i = 1; i <= scmax; i++)
    cout << vlastval[i] << " ";
  return 0;
}