#include <algorithm>
#include <iostream>
#include <unordered_set>
#include <vector>
int main(){
std::ios_base::sync_with_stdio(0);
std::cin.tie(nullptr);
int k, n, b;
int zamiany{0};
std::unordered_set<int> set;
std::vector<int> shelf;
std::cin >> n >> k;
for(int i = 0; i < n; i++){
std::cin >> b;
shelf.push_back(b);
}
int i{0};
while(i < n && set.find(shelf[i]) == set.end() && set.size() < k){
set.insert(shelf[i]);
i++;
}
if(set.size() == k){
std::cout << 0 << "\n";
return 0;
}
//i == pierwsze powtórzenie
i++;
while(i < n && set.size() < k){
if(set.find(shelf[i]) == set.end()){
zamiany += (int) (i - set.size());
set.insert(shelf[i]);
}
i++;
}
if(set.size() == k){
std::cout << zamiany <<"\n";
}
else{
std::cout << -1 << "\n";
}
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 34 35 36 37 38 39 40 41 42 43 44 45 46 | #include <algorithm> #include <iostream> #include <unordered_set> #include <vector> int main(){ std::ios_base::sync_with_stdio(0); std::cin.tie(nullptr); int k, n, b; int zamiany{0}; std::unordered_set<int> set; std::vector<int> shelf; std::cin >> n >> k; for(int i = 0; i < n; i++){ std::cin >> b; shelf.push_back(b); } int i{0}; while(i < n && set.find(shelf[i]) == set.end() && set.size() < k){ set.insert(shelf[i]); i++; } if(set.size() == k){ std::cout << 0 << "\n"; return 0; } //i == pierwsze powtórzenie i++; while(i < n && set.size() < k){ if(set.find(shelf[i]) == set.end()){ zamiany += (int) (i - set.size()); set.insert(shelf[i]); } i++; } if(set.size() == k){ std::cout << zamiany <<"\n"; } else{ std::cout << -1 << "\n"; } return 0; } |
English