fork download
  1. // bai 34
  2. #include <iostream>
  3. #include <vector>
  4. #include <cmath>
  5. using namespace std;
  6.  
  7. int a[25], n, d = 0;
  8. vector<int> r, res;
  9.  
  10. // kiểm tra r có phải vector lồi ko
  11. bool check() {
  12. if (r.size() <= 1)
  13. return true;
  14. int i = 1;
  15. while (r[i] < r[i - 1])
  16. i++;
  17. while (r[i] > r[i - 1] && i < r.size())
  18. i++;
  19. return i >= r.size();
  20. }
  21.  
  22. void visit(int i) {
  23. if (!check())
  24. return;
  25. if (r.size() > d) {
  26. d = r.size();
  27. res.clear();
  28. for (int j = 0; j < r.size(); j++)
  29. res.push_back(r[j]);
  30. }
  31. if (i >= n)
  32. return;
  33. r.push_back(a[i]);
  34. if (check())
  35. visit(i + 1);
  36.  
  37. r.pop_back();
  38. visit(i + 1);
  39. }
  40.  
  41. int main() {
  42. cin>> n;
  43. for (int i = 0; i < n; i++) {
  44. cin>> a[i];
  45. }
  46. visit(0);
  47. cout<< d<< endl;
  48. for (int i = 0; i < d; i++)
  49. cout<< res[i]<< " ";
  50. }
Success #stdin #stdout 0.01s 5284KB
stdin
10
1 3 4 5 4 3 2 1 7 10
stdout
7
5 4 3 2 1 7 10