Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 0.77 KB | None | 0 0
  1. #include <fstream>
  2.  
  3. using namespace std;
  4.  
  5. ofstream out("sclm2.out");
  6.  
  7. int n, v[100005], l, poz[100005], pred[100005];
  8.  
  9. void citire() {
  10.     ifstream in("sclm2.in");
  11.     in >> n;
  12.     for(int i = 1; i <= n; ++i)
  13.         in >> v[i];
  14.     in.close();
  15. }
  16.  
  17. int cautb(int val) {
  18.     if(val >= v[poz[l]])
  19.         return l + 1;
  20.    
  21.     int st = 1, dr = l, m;
  22.     while(st < dr) {
  23.         m = (st + dr) / 2;
  24.         if(v[poz[m]] > val)
  25.             dr = m;
  26.         else
  27.             st = m + 1;
  28.     }
  29.     return st;
  30. }
  31.  
  32. int main() {
  33.  
  34.     citire();
  35.  
  36.     poz[++l] = 1;
  37.     for(int i = 2; i <= n; ++i) {
  38.  
  39.         int j = cautb(v[i]);
  40.         pred[i] = poz[j - 1];
  41.         if(j > l)
  42.             l = j;
  43.         poz[j] = i;
  44.     }
  45.     out << l;
  46.     return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement