Number of Times Binary String Is Prefix-Aligned LeetCode solution in C++
1class BIT {2public:3vector<int> bit;4int n;5BIT(int n) {6bit.resize(n + 1, 0);7this->n = n;8}910int findSum(int i) {11int sum = 0;12while (i > 0) {13sum += bit[i];14i -= (i & (-i));15}16return sum;17}1819void update(int i, int val) {20while (i <= n) {21bit[i] += val;22i += (i & (-i));23}24}25};2627class Solution {28public:29int numTimesAllBlue(vector<int> &flips) {30int n = flips.size();31BIT tree(n + 1);32int res = 0;33string s = string(n, '0');3435int maxi = 0;36for (auto &x : flips) {37if (s[x - 1] == '1') {38tree.update(x, -1);39s[x - 1] = '0';40} else {41s[x - 1] = '1';42tree.update(x, 1);43}44maxi = max(maxi, x);45if (tree.findSum(x) == x && tree.findSum(maxi) == maxi) res++;46}4748return res;49}50};