Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main()
- {
- int n;
- cin >> n;
- int pos = 0;
- map<int, int> m;
- int maxl = 0;
- vector<int> v(n);
- for(int i = 0; i < n; i++) {
- cin >> v[i];
- if(pos == 0) {
- m[v[i]]++;
- maxl = i;
- if(m.size() == 3) {
- if(m[v[i]] == 1)
- m.erase(v[i]);
- else
- m[v[i]]--;
- pos = i;
- maxl = i;
- }
- }
- }
- if(pos == 0) maxl++;
- int i = 0;
- while(true)
- {
- while(m.size() != 1 && i < n)
- {
- if(m[v[i]] == 1)
- m.erase(v[i]);
- else
- m[v[i]]--;
- i++;
- }
- if(i == n || i == pos) break;
- for(int j = pos; j < n; j++) {
- m[v[j]]++;
- if(m.size() > 2) {
- pos = j;
- maxl = max(maxl, j - i);
- if(m[v[j]] == 1)
- m.erase(v[j]);
- else
- m[v[j]]--;
- break;
- }
- }
- }
- if(m.size() < 3) {
- maxl = max(maxl, n - i);
- }
- cout << maxl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement