Advertisement
Norvager

Untitled

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