Advertisement
a53

Medians

a53
Sep 12th, 2021
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.98 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #pragma warning (disable : 26451)
  3. #pragma warning (disable : 4996)
  4. using namespace std;
  5. ifstream fin("medians.in");
  6. ofstream fout("medians.out");
  7. #define MAXN 100005
  8. int a[MAXN], b[2 * MAXN];
  9. int n;
  10. int query(int p) {
  11. int t = 0;
  12. for (int i = (p + MAXN); i; i -= (i & -i)) {
  13. t += b[i];
  14. }
  15. return t;
  16. }
  17. void update(int p, int val) {
  18. for (int i = (p + MAXN); i < 2 * MAXN; i += (i & -i)) {
  19. b[i] += val;
  20. }
  21. }
  22. long long solve(long long k) {
  23. long long s = 0;
  24. for (int i = 0; i < 2 * MAXN; ++i) {
  25. b[i] = 0;
  26. }
  27. long long total = 0;
  28. update(0, 1);
  29. for (int i = 0; i < n; ++i) {
  30. s += (a[i] > k ? -1 : 1);
  31. total += query(s);
  32. update(s, 1);
  33. }
  34. return total;
  35. }
  36. int main() {
  37. long long k;
  38. fin >> n >> k;
  39. for (int i = 0; i < n; ++i) {
  40. fin >> a[i];
  41. }
  42. fout << solve(k) - solve(k - 1);
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement