#include <bits/stdc++.h>
using namespace std;
const int N = 5e5 + 5;
int tab[N];
set <int> rodz;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, k;
cin >> n >> k;
for(int i = 1; i <= n; i++)
cin >> tab[i];
int znal = 0, poz = 1, ustaw = 1;
long long sum = 0;
while(poz <= n && znal < k){
auto it = rodz.find(tab[poz]);
if(it == rodz.end()){
rodz.insert(tab[poz]);
znal++;
sum += poz - ustaw;
ustaw++;
//cout << poz << "\n";
}
//cout << tab[poz] << " " << *it << "\n";
poz++;
}
if(znal < k)
cout << "-1\n";
else
cout << sum << "\n";
}
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 | #include <bits/stdc++.h> using namespace std; const int N = 5e5 + 5; int tab[N]; set <int> rodz; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n, k; cin >> n >> k; for(int i = 1; i <= n; i++) cin >> tab[i]; int znal = 0, poz = 1, ustaw = 1; long long sum = 0; while(poz <= n && znal < k){ auto it = rodz.find(tab[poz]); if(it == rodz.end()){ rodz.insert(tab[poz]); znal++; sum += poz - ustaw; ustaw++; //cout << poz << "\n"; } //cout << tab[poz] << " " << *it << "\n"; poz++; } if(znal < k) cout << "-1\n"; else cout << sum << "\n"; } |
English