fork download
  1. #include<bits/stdc++.h>
  2. #define f1(i, n) for(int i=1;i<=n;++i)
  3. #define f0(i, n) for(int i=0;i<n;++i)
  4. #define ull unsigned long long
  5. #define ll long long
  6. #define rev(a) reverse(a.begin(),a.end())
  7. #define all(x) x.begin(),x.end()
  8. #define so(A, n) sort(A+1, A+n+1)
  9. using namespace std;
  10. const int maxn = 1e6 + 1;
  11. const int N = 3e5 + 5;
  12. int main()
  13. {
  14. ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  15. int n;
  16. cin >> n;
  17. int A[n + 5];
  18. f1(i, n) {
  19. cin >> A[i];
  20. }
  21. vector<int> v = {A[1]};
  22. set<int> s;
  23. s.insert(A[1]);
  24. int groups = 1, maxLength = 1, maxDiff = 1;
  25. for (int i = 2; i <= n; ++i) {
  26. // if (v.empty()) {v.push_back(A[i]); s.insert(A[i]); groups++; continue;}
  27. if (abs(A[i] - v[v.size() - 1]) == 1) {
  28. v.push_back(A[i]);
  29. s.insert(A[i]);
  30. // cout << i << " " << v.size() << endl;
  31. maxLength = max(maxLength, (int)v.size());
  32. maxDiff = max(maxDiff, (int)s.size());
  33. }
  34. else {
  35. v.clear();
  36. s.clear();
  37. v.push_back(A[i]); s.insert(A[i]); groups++;
  38. }
  39. }
  40. maxLength = max(maxLength, (int)v.size());
  41. maxDiff = max(maxDiff, (int)s.size());
  42. cout << groups << " " << maxLength << " " << maxDiff;
  43.  
  44. }
  45.  
  46.  
Success #stdin #stdout 0s 5312KB
stdin
Standard input is empty
stdout
5371 3 2