#include<iostream> #include<vector> #include<set> #include<map> using namespace std; int main() { ios_base::sync_with_stdio(0); int n,k; cin>>n>>k; vector<int> T(n); map<int,int> M; set<int> Sp; int dl=-1; for(auto &i : T) cin>>i; for(auto i : T) { dl++; M[i]++; if(M[i]==1) { Sp.insert(i); } //cout<<"Sp.size "<<Sp.size()<<endl; if(Sp.size()==k) break; } int wynik =0; if(Sp.size()<k) { cout<<-1<<endl; return 0; } for(int i=dl ; i>=0 ; i--) { //cout<<"I "<<i<<endl; int u = T[i]; if(M[u]>1) { wynik+=dl-i; //cout<<"inw "<<dl-i<<endl; dl--; M[u]--; } } cout<<wynik<<endl; 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 | #include<iostream> #include<vector> #include<set> #include<map> using namespace std; int main() { ios_base::sync_with_stdio(0); int n,k; cin>>n>>k; vector<int> T(n); map<int,int> M; set<int> Sp; int dl=-1; for(auto &i : T) cin>>i; for(auto i : T) { dl++; M[i]++; if(M[i]==1) { Sp.insert(i); } //cout<<"Sp.size "<<Sp.size()<<endl; if(Sp.size()==k) break; } int wynik =0; if(Sp.size()<k) { cout<<-1<<endl; return 0; } for(int i=dl ; i>=0 ; i--) { //cout<<"I "<<i<<endl; int u = T[i]; if(M[u]>1) { wynik+=dl-i; //cout<<"inw "<<dl-i<<endl; dl--; M[u]--; } } cout<<wynik<<endl; return 0; } |