fork(3) download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void findMaxSubArray(int A[], int n)
  5. {
  6. int len = 1;
  7. int start = 0, end = 0;
  8. set<int> dup_catcher;
  9.  
  10. for (int i = 0; i < n - 1; i++)
  11. {
  12. dup_catcher.clear();
  13. dup_catcher.insert(A[i]);
  14. int min_val = A[i], max_val = A[i];
  15.  
  16. for (int j = i + 1; j < n; j++)
  17. {
  18. min_val = min(min_val, A[j]);
  19. max_val = max(max_val, A[j]);
  20. //dup_catcher.insert(A[j]);
  21. bool isDuplicate =dup_catcher.insert(A[j]).second;
  22. if( isDuplicate &&(max_val - min_val == j - i))
  23. {
  24. if (len < max_val - min_val + 1)
  25. { len = max_val - min_val + 1;
  26. start = i, end = j;
  27. }
  28.  
  29. }
  30. else if(!isDuplicate )
  31. break;
  32. else
  33. {
  34. continue;
  35. }
  36. }
  37. }
  38. cout << "The largest sub-array is [" << start << ", " << end << "]";
  39. }
  40.  
  41. int main()
  42. {
  43. int A[] = { 2, 0, 2, 1, 4, 3, 1, 0 };
  44. int n = sizeof(A) / sizeof(A[0]);
  45.  
  46. findMaxSubArray(A, n);
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0s 16064KB
stdin
Standard input is empty
stdout
The largest sub-array is [1, 5]