fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int countOfSubarray(vector<int>& a , int x , int y){
  5. int n = a.size();
  6. for(int i=0;i<n;i++){
  7. a[i] = (a[i]==x)?1:-1;
  8. }
  9.  
  10. // for(int x:a)cout<<x<<" ";
  11. cout<<endl;
  12.  
  13. int ans=0;
  14. unordered_map<int,int>mpp;
  15. mpp[0] = 1;
  16. int prefixSum=0;
  17. for(int i=0;i<n;i++){
  18. prefixSum += a[i];
  19. ans += mpp[prefixSum];
  20. mpp[prefixSum]++;
  21. }
  22. return ans;
  23. }
  24.  
  25. int main() {
  26. int n;
  27. cin>>n;
  28. int x,y;
  29. cin>>x>>y;
  30. vector<int>a(n);
  31. for(int i=0;i<n;i++){
  32. cin>>a[i];
  33. }
  34. cout<<countOfSubarray(a,x,y);
  35. return 0;
  36. }
Success #stdin #stdout 0.01s 5292KB
stdin
7
2 3
2 3 3 2 2 3 2
stdout
9