Advertisement
jedrzejd

Najdłuższy Podciąg Rosnący

Nov 7th, 2018
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. //
  2. //  main.cpp
  3. //  Najdłuższy Podciąg Rosnący
  4. //
  5. //  Created by Jędrzej Dudzicz on 20.08.2017.
  6. //  Copyright © 2017 Jędrzej Dudzicz. All rights reserved.
  7. //
  8.  
  9. #include <iostream>
  10. #include <cstdio>
  11. #include <algorithm>
  12. using namespace std;
  13. int main(){
  14.     int n;
  15.     scanf("%d",&n);
  16.     int *t=new int[n+2];
  17.     int *a=new int[n+2];
  18.     for(int i=0;i<n;i++){
  19.         scanf("%d",&a[i]);
  20.         t[i+1]=1e9;
  21.     }
  22.     t[0]=0;
  23.     int ile=0;
  24.     for(int i=0;i<n;++i){
  25.         int p=0,k=n+1,s1,s=0;
  26.         while(p<=k){
  27.             s1=(p+k)/2;
  28.             if(t[s1]>=a[i]){
  29.                 s=s1;
  30.                 k=s1-1;
  31.             }
  32.             else p=s1+1;
  33.         }
  34.         if(ile<s)ile=s;
  35.         t[s]=a[i];
  36.     }
  37.     printf("%d\n",ile);
  38.     return 0;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement