Norvager

Untitled

Dec 17th, 2018
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.80 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.     int M = (l + r + 1) / 2;
  12.     if (row[M - 1] < a && a <= row[M])
  13.         return M;
  14.     else if (row[M - 1] >= a && a < row[M])
  15.         return log_find(l, M - 1, a);
  16.     else return log_find(M + 1, r, a);
  17. }
  18.  
  19. int main()
  20. {
  21.     int N, size = 0;
  22.     int a;
  23.     scanf("%d", &N);
  24.     row.resize(1, -inf);
  25.     row.resize(N + 1, inf);
  26.     for (int i = 0; i < N; i++)
  27.     {
  28.         scanf("%d", &a);
  29.         int id = log_find(1, i, a);
  30.         int k = 0;
  31.         if (row[id] == inf)
  32.             size++;
  33.         row[id] = min(row[id], a);
  34.     }
  35.    
  36.     printf("%d", size);
  37.    
  38.     return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment