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