fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n; cin >> n;
  6. vector<int> arr(n);
  7. for(int i = 0; i < n; i++)
  8. cin >> arr[i];
  9.  
  10. vector<int> diff(n);
  11. for(int i = 1; i < n; i++){
  12. diff[i] = arr[i] - arr[i-1];
  13. }
  14. vector<int> pref(n);
  15. vector<int> suff(n);
  16. pref[1] = 1;
  17. int len = INT_MIN;
  18. for(int i = 2; i < n; i++){
  19. if(diff[i] == diff[i-1])
  20. pref[i] = pref[i-1]+1;
  21. else
  22. pref[i] = 1;
  23.  
  24. len = max(len, pref[i]);
  25. }
  26. suff[n-1] = 1;
  27. for(int i = n-2; i >= 1; i--){
  28. if(diff[i] == diff[i+1])
  29. suff[i] = suff[i+1]+1;
  30. else
  31. suff[i] = 1;
  32. }
  33. int max_len = 0;
  34. for(int i = 1; i < n; i++){
  35. if(abs(diff[i]) == abs(diff[i+1])){
  36. if(i >=2 && i < n-2)
  37. max_len = pref[i-1]+suff[i+2]+2;
  38. else if(i < n-2)
  39. max_len = suff[i+2]+3;
  40. else if(i >= 2)
  41. max_len = suff[i+2]+3;
  42. else
  43. max_len = 2;
  44.  
  45. len = max(len, max_len);
  46. }
  47. }
  48. cout << len+1;
  49. return 0;
  50. }
Success #stdin #stdout 0.01s 5288KB
stdin
3
6 3 8
stdout
2