Advertisement
Alex_tz307

Interesting Array

Mar 24th, 2021
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. const int NMAX = 1e5 + 5;
  6. int N, a[NMAX];
  7. long long ans = 1;
  8.  
  9. void solve(int st, int dr) {
  10.     unordered_map<int,int> freq;
  11.     for(int i = st; i <= dr; ++i)
  12.         ++freq[a[i]];
  13.     int fr_max = 1, fr_min = dr - st + 1;
  14.     for(auto it : freq) {
  15.         fr_max = max(fr_max, it.second);
  16.         fr_min = min(fr_min, it.second);
  17.     }
  18.     ans = max(ans, 1LL * fr_max * fr_min);
  19.     int last = 0;
  20.     for(int i = st; i <= dr; ++i)
  21.         if(freq[a[i]] == fr_min) {
  22.             if(last) {
  23.                 solve(last, i - 1);
  24.                 last = 0;
  25.             }
  26.         }
  27.         else
  28.             if(last == 0)
  29.                 last = i;
  30.     if(last)
  31.         solve(last, dr);
  32. }
  33.  
  34. int main() {
  35.     ios_base::sync_with_stdio(false);
  36.     cin.tie(nullptr);
  37.     cout.tie(nullptr);
  38.     cin >> N;
  39.     for(int i = 1; i <= N; ++i)
  40.         cin >> a[i];
  41.     solve(1, N);
  42.     cout << ans << '\n';
  43. }
  44.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement