#include <iostream> using namespace std; const int SZ = 500005; int W[SZ]; int main() { int n,k; int a; scanf("%d%d",&n, &k); long long res = 0L; int dsf = 0; for (int i=0;i<k;i++) { scanf("%d",&a); if (W[a]) dsf++; else res += dsf; W[a]=1; } for (int i=k;i<n;i++) { scanf("%d",&a); if (!W[a] && dsf) { res += i-k+dsf; dsf--; } W[a]=1; } cout << (dsf == 0 ? res : -1) << endl; }
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 | #include <iostream> using namespace std; const int SZ = 500005; int W[SZ]; int main() { int n,k; int a; scanf("%d%d",&n, &k); long long res = 0L; int dsf = 0; for (int i=0;i<k;i++) { scanf("%d",&a); if (W[a]) dsf++; else res += dsf; W[a]=1; } for (int i=k;i<n;i++) { scanf("%d",&a); if (!W[a] && dsf) { res += i-k+dsf; dsf--; } W[a]=1; } cout << (dsf == 0 ? res : -1) << endl; } |