fork(6) download
  1. #include<iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5. int main()
  6. {
  7. int a[]={0,8,4,12,2,10,6,1,9,5,13,3,11,7};
  8. int b[50],i,j,n,ls[50];
  9. n=sizeof(a)/sizeof(a[0]);
  10. int maxlen=0,end=-1;
  11. b[0]=-1;
  12. for(i=0;i<n;i++)
  13. {
  14. ls[i]=1;
  15. for(j=0;j<i;j++)
  16. {
  17. if(a[i]>a[j] && ls[i]<ls[j]+1)
  18. {
  19. ls[i]=ls[j]+1;
  20. b[i]=j;
  21. }
  22. }
  23. if(ls[i]>maxlen)
  24. {
  25. end=i;
  26. maxlen=ls[i];
  27. }
  28. }
  29.  
  30. cout<<maxlen<<endl;
  31. vector<int> v;
  32. for(int k=end;k!=-1;k=b[k])
  33. {
  34. v.push_back(a[k]);
  35. }
  36. reverse(v.begin(), v.end());
  37. for(int x: v) {
  38. cout << x << ' ';
  39. }
  40.  
  41. return 0;
  42. }
Success #stdin #stdout 0s 2984KB
stdin
Standard input is empty
stdout
5
0 4 6 9 13