#include<iostream>
#include<set>
using namespace std;
typedef long long ll;
ll t[500010];
bool l[500010];
//int il[500010];
set<ll>s;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll n,k,x=0,sc,g=0;
cin>>n>>k;
for(ll i=0;i<n;i++){
cin>>t[i];
if(x<k){
if(s.find(t[i])==s.end()){
s.insert(t[i]);
x++;
if(x==k)sc=i;
l[i]=1;
}
}
}
if(x<k){
cout<<-1;
return 0;
}
/*for(int i=n-1;i>=0;i--){
il[i]=il[i+1];
if(l[i]==0)il[i]++;
}*/
int io=0;
for(int i=sc;i>=0;i--){
if(l[i]==0){
g+=io;
}
else io++;
}
cout<<g;
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 | #include<iostream> #include<set> using namespace std; typedef long long ll; ll t[500010]; bool l[500010]; //int il[500010]; set<ll>s; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll n,k,x=0,sc,g=0; cin>>n>>k; for(ll i=0;i<n;i++){ cin>>t[i]; if(x<k){ if(s.find(t[i])==s.end()){ s.insert(t[i]); x++; if(x==k)sc=i; l[i]=1; } } } if(x<k){ cout<<-1; return 0; } /*for(int i=n-1;i>=0;i--){ il[i]=il[i+1]; if(l[i]==0)il[i]++; }*/ int io=0; for(int i=sc;i>=0;i--){ if(l[i]==0){ g+=io; } else io++; } cout<<g; return 0; } |
English