#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; } |
English