Link to this code: https://cses.fi/paste/00b7e081703e954cf4205c/
#include<iostream>
#include<unordered_map>

int main() {
	std::ios_base::sync_with_stdio(false);
	std::cin.tie(NULL);

	int n = 0;
	std::cin >> n;

	std::unordered_map<int, int> last_incidence_table;
	long long count = 0LL;
	int i = 1;
	int j = 1;
	while (j < n + 1) {
		int x_j = 0;
		std::cin >> x_j;
		int last_incidence_table_x_j = last_incidence_table[x_j];
		if (last_incidence_table_x_j >= i) {
			i = last_incidence_table_x_j + 1;
		}
		last_incidence_table[x_j] = j;
		count = count + (long long)j - (long long)i + 1LL;
		j = j + 1;
	}
	std::cout << count << std::endl;
	return 0;
}
// \{(i,j) \mid (i,j) \in [0,n)^{2}, i \leq j \} = \cup_{k\in [0,n)} \{(i,j) \mid (i,j) \in [0,n)^{2}, i \leq j, j = k \}
// $HOMEBREW_PREFIX/opt/llvm@21/bin/clang++ -std=c++23 distinct_values_subarrays2.cpp -o distinct_values_subarrays2