#include <iostream>
#include <map>
#include <vector>

int GetTotal(std::vector<int> arr, int x, int y) {
	std::vector<int> x_y_diffs;
	x_y_diffs.push_back(0);
	for (int i = 0; i < arr.size(); i++) { 
		int val = x_y_diffs[i];
		if (arr[i] == x) val++;
		else if (arr[i] == y) val--;
		x_y_diffs.push_back(val);
	}

	std::map<int, int> histogram;
	int result = 0;
	for (int x : x_y_diffs) {
		result += histogram[x];
		histogram[x]++;
	}
	return result;
}

int main(void) {
	std::vector<int> arr = {1, 0 , 2, 1};
	std::cout << GetTotal(arr, 1, 0);
}
