Advertisement
ibragimova_mariam

Untitled

Aug 8th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.30 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. int n;
  8. cin >> n;
  9. int pos = 0;
  10. map<int, int> m;
  11. int maxl = 0;
  12. vector<int> v(n);
  13. for(int i = 0; i < n; i++) {
  14. cin >> v[i];
  15. if(pos == 0) {
  16. m[v[i]]++;
  17. maxl = i;
  18. if(m.size() == 3) {
  19. if(m[v[i]] == 1)
  20. m.erase(v[i]);
  21. else
  22. m[v[i]]--;
  23. pos = i;
  24. maxl = i;
  25. }
  26. }
  27. }
  28. if(pos == 0) maxl++;
  29.  
  30. int i = 0;
  31. while(true)
  32. {
  33. while(m.size() != 1 && i < n)
  34. {
  35. if(m[v[i]] == 1)
  36. m.erase(v[i]);
  37. else
  38. m[v[i]]--;
  39. i++;
  40. }
  41. if(i == n || i == pos) break;
  42. for(int j = pos; j < n; j++) {
  43. m[v[j]]++;
  44. if(m.size() > 2) {
  45. pos = j;
  46. maxl = max(maxl, j - i);
  47. if(m[v[j]] == 1)
  48. m.erase(v[j]);
  49. else
  50. m[v[j]]--;
  51.  
  52. break;
  53. }
  54. }
  55. }
  56. if(m.size() < 3) {
  57. maxl = max(maxl, n - i);
  58. }
  59. cout << maxl;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement