You Are So Beautiful (Codeforces 1883F)
Tags: Others, data structures

You are given an array of integers $$$a_1, a_2, \ldots, a_n$$$. Calculate the number of subarrays of this array $$$1 \leq l \leq r \leq n$$$, such that: The array $$$b = [a_l, a_{l+1}, \ldots, a_r]$$$ occurs in the array $$$a$$$ as a subsequence exactly once. In other words, there is exactly one way to select a set of indices $$$1 \leq i_1 < i_2 < \ldots < i_{r - l + 1} \leq n$$$, such that $$$b_j = a_{i_j}$$$ for all $$$1 \leq j \leq r - l + 1$$$.

Input: Each test consists of multiple test cases. The first line contains a single integer $$$t$$$ ($$$1 \leq t \leq 10^4$$$) — the number of test cases. This is followed by their description.The first line of each test case contains an integer $$$n$$$ ($$$1 \leq n \leq 10^5$$$) — the size of the array $$$a$$$.The second line of each test case contains $$$n$$$ integers $$$a_1, a_2, \ldots, a_n$$$ ($$$1 \leq a_i \leq 10^9$$$).It is guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$2 \cdot 10^5$$$.

Output: For each test case, output the number of suitable subarrays.

Note: In the first test case, there is exactly one subarray $$$(1, 1)$$$ that suits us.In the second test case, there is exactly one subarray $$$(1, 2)$$$ that suits us. Subarrays $$$(1, 1)$$$ and $$$(2, 2)$$$ do not suit us, as the subsequence $$$[1]$$$ occurs twice in the array.In the third test case, all subarrays except $$$(1, 1)$$$ and $$$(3, 3)$$$ are suitable.

Sample Inputs:
6
1
1
2
1 1
3
1 2 1
4
2 3 2 1
5
4 5 4 5 4
10
1 7 7 2 3 4 3 2 1 100

Sample Outputs:
1
1
4
7
4
28

Solution (Python):
num_tests = int(input())
for _ in range(num_tests):
    array_size = int(input())
    array_elements = list(map(int, input().split()))
    frequency_dict = {}
    for i in range(array_size):
        if frequency_dict.get(array_elements[i]):
            frequency_dict[array_elements[i]] = len(frequency_dict)
        else:
            frequency_dict[array_elements[i]] = len(frequency_dict) + 1
    total_sum = 0
    for key in frequency_dict:
        total_sum += frequency_dict[key]
    print(total_sum)

Solution (Python):
t = int(input())
for _ in range(t):
    n = int(input())
    a = list(map(int, input().split()))
    d = {}
    for i in range(n):
        if d.get(a[i]):
            d[a[i]] = len(d)
        else:
            d[a[i]] = len(d) + 1
    ans = 0
    for k in d:
        ans += d[k]
    print(ans)

Solution (Python):
t = int(input())
for _ in range(t):
    n = int(input())
    a = list(map(int, input().split()))
    d = {}
    for i in range(n):
        if d.get(a[i]):
            d[a[i]] = len(d)
        else:
            d[a[i]] = len(d) + 1
    ans = 0
    for k in d:
        ans += d[k]
    print(ans)