Advertisement
YEZAELP

o21_oct_inc2

Jan 13th, 2022
801
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.76 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int N = 1e5 + 10;
  5. int ar[N], lis[N];
  6. int n, len;
  7.  
  8. int main(){
  9.  
  10.     scanf("%d", &n);
  11.  
  12.     for(int i=1;i<=n;i++){
  13.         scanf("%d", &ar[i]);
  14.     }
  15.  
  16.     lis[1] = ar[1];
  17.     len = 1;
  18.     for(int i=2;i<=n;i++){
  19.         if(ar[i] > lis[len]){
  20.             len ++;
  21.             lis[len] = ar[i];
  22.         }
  23.         else{
  24.             int l = 1, r = len, mn = len;
  25.             while(l <= r){
  26.                 int mid = (l + r) / 2;
  27.                 if(lis[mid] >= ar[i]){
  28.                     mn = min(mn, mid);
  29.                     r = mid - 1;
  30.                 }
  31.                 else l = mid + 1;
  32.             }
  33.             lis[mn] = ar[i];
  34.         }
  35.     }
  36.  
  37.     printf("%d\n", len);
  38.  
  39.     return 0;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement