Advertisement
jeff69

Untitled

Sep 20th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.76 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long LL;
  4.  
  5. int n;
  6. const int MX=1e4;
  7. int gui[MX];
  8. int ar[MX],len[MX],link[MX];
  9. int main()
  10. {
  11. cin>>n;
  12. for(int i=0;i<n;i++)
  13. scanf("%d",ar+i);
  14. int maxlen=0;
  15.  
  16. for(int i=0;i<n;i++)
  17. {
  18. int x=ar[i];
  19. int st=0,en=maxlen;
  20. int k=0;
  21. while(st<=en)
  22. {
  23. k=(st+en)/2;
  24. if(x<=len[k])
  25. en=k-1;
  26. else st=k+1;
  27.  
  28. }
  29. len[st]=x;
  30. maxlen=max(maxlen,st);
  31. link[x]=len[st-1];
  32. gui[st]=x;
  33. }
  34. int temp=gui[maxlen];
  35. cout<<maxlen<<endl;
  36.  
  37. cout<<gui[maxlen]<<' ';
  38. while(link[temp]!=0)
  39. {
  40. cout<<link[temp]<<' ';
  41. temp=link[temp];
  42. }
  43. return 0;
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement