Cod sursa(job #1972149)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 22 aprilie 2017 10:37:57
Problema Heavy metal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <cstdio>
#include <vector>

std:: vector<int> v;

int binarySearch(int x) {
  int st = 0, dr = (int)v.size() - 1;
  int last = -1;
  while (st <= dr) {
    int med = (st + dr) / 2;
    if (v[med] <= x) {
      dr = med - 1;
      last = med;
    } else {
      st = med + 1;
    }
  }
  return last;
}

int main() {
  freopen("culmi.in", "r", stdin);
  freopen("culmi.out", "w", stdout);
  
  int N;
  scanf("%d", &N);
  for (int i = 0; i < N; ++i) {
    int x;
    scanf("%d", &x);
    int bs = binarySearch(x);
    if (bs == -1) {
      v.push_back(x);
    } else {
      v[bs] = x;
    }
  }
  printf("%d\n", (int)v.size());
  return 0;
}