1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <vector>
#include <set>
#include <map>

int32_t ora(const int total_bottles, const int different_bottles, const std::vector<int>& brands) {
    std::set<int32_t> unique_brands(brands.cbegin(), brands.cend());
    if (unique_brands.size() < different_bottles) {
        return -1;
    }
    std::vector<int32_t> ids{};
    std::map<int32_t, int32_t> count{};
    for (int i = 0; i < different_bottles; ++i) {
        count[brands[i]]++;
        if (count[brands[i]] > 1) {
            ids.emplace_back(i);
        }
    }
    int32_t result{};
    for (int i = ids.size() - 1; i >= 0; --i) {
        result += (different_bottles + i) - ids[i];
    }
    return result;
}

int main() {
    int32_t total_bottles{};
    int32_t different_bottles{};
    std::cin >> total_bottles >> different_bottles;
    std::vector<int32_t> brands(total_bottles);
    for (int i = 0; i < total_bottles; ++i) {
        std::cin >> brands[i];
    }
    std::cout << ora(total_bottles, different_bottles, brands) << "\n";

    return 0;
}