#include<bits/stdc++.h> using namespace std; const int N = 500001; bool bylo[N], biore[N]; int T[N]; int main () { int n, k, ile = 0, j; cin>>n>>k; for (int i = 0; i < n; ++i) cin>>T[i]; for (int i = 0; i < n; ++i) { if (!bylo[T[i]]) { bylo[T[i]] = true; biore[i] = true; ++ile; if (ile == k) j = i; } } if (ile < k) {cout<<-1; return 0;} if (k == n) {cout<<0; return 0;} long long w = 0; ile = 0; for (int i = j; i >= 0; --i) { if (!biore[i]) { w += j - i - ile; ++ile; } } cout<<w; return 0; }
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 | #include<bits/stdc++.h> using namespace std; const int N = 500001; bool bylo[N], biore[N]; int T[N]; int main () { int n, k, ile = 0, j; cin>>n>>k; for (int i = 0; i < n; ++i) cin>>T[i]; for (int i = 0; i < n; ++i) { if (!bylo[T[i]]) { bylo[T[i]] = true; biore[i] = true; ++ile; if (ile == k) j = i; } } if (ile < k) {cout<<-1; return 0;} if (k == n) {cout<<0; return 0;} long long w = 0; ile = 0; for (int i = j; i >= 0; --i) { if (!biore[i]) { w += j - i - ile; ++ile; } } cout<<w; return 0; } |