#include<cstdio> #include<cmath> #include<set> using namespace std; int main(){ int n,k,o, to_shift=0, result=0, last_unique=0; scanf("%d %d", &n, &k); set<int> unikalne = set<int>(); pair<set<int>::iterator,bool> ret; for( int i = 0; i <n; i++){ if(k==0) break; scanf("%d", &o); ret = unikalne.insert(o); if (ret.second==false){ to_shift++; result +=i; } else{ k--; last_unique = i; } } if (k > 0){ printf("-1"); return 0; } result = to_shift * last_unique - result - (to_shift - 1) * to_shift / 2; printf("%d", result); 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 | #include<cstdio> #include<cmath> #include<set> using namespace std; int main(){ int n,k,o, to_shift=0, result=0, last_unique=0; scanf("%d %d", &n, &k); set<int> unikalne = set<int>(); pair<set<int>::iterator,bool> ret; for( int i = 0; i <n; i++){ if(k==0) break; scanf("%d", &o); ret = unikalne.insert(o); if (ret.second==false){ to_shift++; result +=i; } else{ k--; last_unique = i; } } if (k > 0){ printf("-1"); return 0; } result = to_shift * last_unique - result - (to_shift - 1) * to_shift / 2; printf("%d", result); return 0; } |