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
38
39
40
41
#include <bits/stdc++.h>
using namespace std;

using ull = unsigned long long;

int n, k;
vector<int> oranzady;
queue<int> wolne;          // mijsca
unordered_set<int> zajete; // oranzady
int miejsce, ile;
ull res;

int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    
    cin >> n >> k;
    oranzady.resize(n);
    for (int i = 0; i < n; ++i)
        cin >> oranzady[i];
    for (int i = 0; i < n; ++i)
    {
        wolne.push(i);
        if (zajete.find(oranzady[i]) == zajete.end())
        {
            ile++;
            miejsce = wolne.front();
            wolne.pop();
            res += (ull)(i - miejsce);
            zajete.insert(oranzady[i]);
        }
        if (ile == k)
            break;
    }
    if (ile < k)
        cout << "-1\n";
    else
        cout << res << '\n';
}