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