josiftepe

Untitled

Oct 24th, 2020
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. #include <map>
  5. #include <set>
  6. using namespace std;
  7. int main() {
  8.     ios_base::sync_with_stdio(false);
  9.     int n;
  10.     cin >> n;
  11.     vector<int> v(n);
  12.     for(int &x : v) {
  13.         cin >> x;
  14.     }
  15.     set<int> s;
  16.     int j = 1;
  17.     int ret = 1; // maximum subarray length
  18.     for(int i = 0; i < n; ++i) {
  19.         s.insert(v[i]);
  20.         int repeating_number = -1;
  21.         while(j < n) {
  22.             s.insert(v[j]);
  23.             if((int)s.size() != j - i + 1) {
  24.                 repeating_number = v[j];
  25.                 break;
  26.             }
  27.             ret = max(ret, j - i + 1);
  28.             ++j;
  29.         }
  30.         int k = i;
  31.         while(k < n and (int)s.size() != j - k + 1) {
  32.             s.erase(v[k]);
  33.             if(repeating_number == v[k]) {
  34.                 s.insert(v[k]);
  35.             }
  36.             if((int)s.size() == j - k + 1) {
  37.                 ret = max(ret, j - k + 1);
  38.                 break;
  39.             }
  40.             ++k;
  41.         }
  42.         i = k;
  43.         --i;
  44.     }
  45.    
  46.    
  47.     cout << ret << endl;
  48.    
  49. }
  50.  
  51.  
  52.  
  53.  
  54.  
  55. /*
  56.  8
  57.  1 2 1 3 2 7 4 2 1 2 3 4 5 6 7 8
  58.  */
  59.  
Advertisement
Add Comment
Please, Sign In to add comment