Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #define inf 1000*1000*1000 + 1
- #include <cstdio>
- #include <vector>
- #include <algorithm>
- using namespace std;
- vector<int> row;
- int log_find(int l, int r, int a)
- {
- if (l >= r)
- return l;
- int M = (l + r + 1) / 2;
- if (row[M] < a)
- return log_find(M, r, a);
- else if (a <= row[M])
- return log_find(l, M - 1, a);
- }
- int main()
- {
- int N, size = 0;
- int a;
- scanf("%d", &N);
- row.resize(1, -inf);
- row.resize(N + 1, inf);
- for (int i = 0; i < N; i++)
- {
- scanf("%d", &a);
- int id = log_find(1, N, a) + 1;
- if (row[id] == inf)
- size++;
- row[id] = min(row[id], a);
- }
- int k = 0;
- printf("%d", size);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement