Advertisement
mickypinata

PROG-T1110: Median

Jul 16th, 2021
1,356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.83 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. typedef long long lli;
  5.  
  6. const int N = 1e6;
  7.  
  8. int qsum[N + 1];
  9. map<int, int> mp[2];
  10.  
  11. int main(){
  12.  
  13.     int nNumber, tr;
  14.     scanf("%d%d", &nNumber, &tr);
  15.     for(int i = 1; i <= nNumber; ++i){
  16.         int x;
  17.         scanf("%d", &x);
  18.         if(x > tr){
  19.             qsum[i] = 1;
  20.         } else if(x == tr){
  21.             qsum[i] = 0;
  22.         } else {
  23.             qsum[i] = -1;
  24.         }
  25.         qsum[i] += qsum[i - 1];
  26.     }
  27.  
  28.     lli sum = 0;
  29.     ++mp[0][0];
  30.     for(int i = 1; i <= nNumber; ++i){
  31.         int curr = i % 2;
  32.         int prev = curr ^ 1;
  33.         map<int, int>::iterator itr = mp[prev].find(qsum[i]);
  34.         if(itr != mp[prev].end()){
  35.             sum += itr -> second;
  36.         }
  37.         ++mp[curr][qsum[i]];
  38.     }
  39.     cout << sum;
  40.  
  41.     return 0;
  42. }
  43.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement