#include <bits/stdc++.h> using namespace std; #define ll long long int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int n, k; cin>>n>>k; int a[n]; set<int> t; for (int i=0; i<n; ++i) { cin>>a[i]; t.insert(a[i]); } if ((int)t.size() < k) { cout<<-1<<endl; return 0; } set<int> s; int r=0; ll c = 0; for (int i=0; i<k; ++i) { r = max(r, i); if (s.find(a[i]) == s.end()) { s.insert(a[i]); continue; } for (; r<n; ++r) { if (s.find(a[r]) == s.end()) { c += (ll)(r-i); s.insert(a[r]); ++r; break; } } } cout<<c<<endl; }
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 42 43 44 45 46 47 48 49 | #include <bits/stdc++.h> using namespace std; #define ll long long int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int n, k; cin>>n>>k; int a[n]; set<int> t; for (int i=0; i<n; ++i) { cin>>a[i]; t.insert(a[i]); } if ((int)t.size() < k) { cout<<-1<<endl; return 0; } set<int> s; int r=0; ll c = 0; for (int i=0; i<k; ++i) { r = max(r, i); if (s.find(a[i]) == s.end()) { s.insert(a[i]); continue; } for (; r<n; ++r) { if (s.find(a[r]) == s.end()) { c += (ll)(r-i); s.insert(a[r]); ++r; break; } } } cout<<c<<endl; } |