Advertisement
nikitta_e

Медианчо

Dec 3rd, 2024
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <cstdio>
  2. #include <vector>
  3. #include <iostream>
  4. #include <algorithm>
  5. #include <unordered_map>
  6. using namespace std;
  7.  
  8. int main()
  9. {
  10.     int n,b;
  11.     cin >> n >>b;
  12.     vector<int>nums(n+1);
  13.  
  14.  
  15.     int whereM=-1;
  16.     for(int i=1; i<=n; i++)
  17.    {
  18.        int x;
  19.        cin>>x;
  20.  
  21.         if(x==b)
  22.         {
  23.             whereM=i;
  24.         }
  25.         nums[i]=x;
  26.     }
  27.     int sum=0;
  28.     unordered_map<int,int> odd;
  29.  
  30.     unordered_map<int,int> even;
  31.     even[0]=1;
  32.     odd[0]=0;
  33.     for(int i=whereM-1; i>0; i--)
  34.     {
  35.         if(nums[i]>b)sum++;
  36.         else  sum--;
  37.         if((whereM-i)%2==0)
  38.         {
  39.             if(even.find(sum)!=even.end())even[sum]++;
  40.             else even[sum]=1;
  41.         }
  42.         else if(odd.find(sum)!=odd.end())odd[sum]++;
  43.         else odd[sum]=1;
  44.     }
  45.    
  46.     sum=0;
  47.     int count=even[0];
  48.     for(int i=whereM+1; i<=n ; i++)
  49.    {
  50.        if(nums[i]>b)sum++;
  51.         else sum--;
  52.         if((i-whereM)%2==0)
  53.         {
  54.             if(even.find(-sum)!=even.end())   count +=even[-sum];
  55.         }
  56.  
  57.         else
  58.         {
  59.             if(odd.find(-sum)!=odd.end())   count+=odd[-sum];
  60.         }
  61.     }
  62.  
  63.     cout << count<<'\n';
  64.    return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement