Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int NMAX = 1e5 + 5;
- int N, a[NMAX];
- long long ans = 1;
- void solve(int st, int dr) {
- unordered_map<int,int> freq;
- for(int i = st; i <= dr; ++i)
- ++freq[a[i]];
- int fr_max = 1, fr_min = dr - st + 1;
- for(auto it : freq) {
- fr_max = max(fr_max, it.second);
- fr_min = min(fr_min, it.second);
- }
- ans = max(ans, 1LL * fr_max * fr_min);
- int last = 0;
- for(int i = st; i <= dr; ++i)
- if(freq[a[i]] == fr_min) {
- if(last) {
- solve(last, i - 1);
- last = 0;
- }
- }
- else
- if(last == 0)
- last = i;
- if(last)
- solve(last, dr);
- }
- int main() {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- cin >> N;
- for(int i = 1; i <= N; ++i)
- cin >> a[i];
- solve(1, N);
- cout << ans << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement