Advertisement
Norvager

Untitled

Dec 17th, 2018
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #define inf 1000*1000*1000 + 1
  3. #include <cstdio>
  4. #include <vector>
  5. #include <algorithm>
  6. using namespace std;
  7. vector<int> row;
  8.  
  9. int log_find(int l, int r, int a)
  10. {
  11.     if (l >= r)
  12.         return l;
  13.     int M = (l + r + 1) / 2;
  14.     if (row[M] < a)
  15.         return log_find(M, r, a);
  16.     else if (a <= row[M])
  17.         return log_find(l, M - 1, a);
  18. }
  19.  
  20. int main()
  21. {
  22.     int N, size = 0;
  23.     int a;
  24.     scanf("%d", &N);
  25.     row.resize(1, -inf);
  26.     row.resize(N + 1, inf);
  27.     for (int i = 0; i < N; i++)
  28.     {
  29.         scanf("%d", &a);
  30.         int id = log_find(1, N, a) + 1;
  31.         if (row[id] == inf)
  32.             size++;
  33.         row[id] = min(row[id], a);
  34.     }
  35.     int k = 0;
  36.     printf("%d", size);
  37.     return 0;
  38. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement