# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1144154 | AlgorithmWarrior | Sequence (APIO23_sequence) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100000;
int n;
vector<int> a;
long long countMedianSubarrays(int median) {
vector<int> trans(n);
int medianIndex = -1;
// Transformăm array-ul în -1, 0, +1
for (int i = 0; i < n; ++i) {
if (a[i] < median) trans[i] = -1;
else if (a[i] > median) trans[i] = 1;
else {
trans[i] = 0;
medianIndex = i; // reținem poziția medianei
}
}
// Folosim un hash map pentru a număra prefix sum-urile
unordered_map<int, int> freqLeft, freqRight;
int sum = 0;
long long result = 0;
// Contorizăm prefix sum-urile din stânga medianei
for (int i = medianIndex; i >= 0; --i) {
sum += trans[i];