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
#include <cstdio>
#include <vector>
#include <map>
using namespace std;

int main() {
	unsigned n, k;
	scanf("%u%u", &n, &k);
	
	if (k == n) {
		printf("%u", k);
		return 0;
	}
	
	std::vector<unsigned> marka(n);
    std::map<unsigned, bool> used;
	for(int i=0; i<n; i++) {
		scanf("%u", &marka[i]);
		used[i] = false;
	}
	
    unsigned suma = 0;
    
    unsigned start = 0;
    unsigned cur = 0;
    
    while (cur < n && start < k) {
    	while (cur < n && used[marka[cur]]) cur++;
    	if (cur >= n) break;
    	
    	used[marka[cur]] = true;
    	suma += (cur - start);
    	cur = ++start;
    }
    
    if (start == k) printf("%u", suma);
    else printf("-1");
    
	return 0;
}