fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define ll long long
  5. #define __luciousx__ signed main()
  6. #define chiuluon ios_base::sync_with_stdio(false); cin.tie(nullptr);
  7.  
  8. const ll maxn = 1e6 + 9;
  9. static ll arr[maxn];
  10. unordered_map<ll, int> mp;
  11.  
  12. __luciousx__
  13. {
  14. chiuluon;
  15.  
  16. ll n, m, u;
  17. cin >> n >> m >> u;
  18.  
  19. for (int i = 1; i <= n; i++){
  20. cin >> arr[i];
  21. }
  22.  
  23. ll res = 0;
  24.  
  25. {
  26. mp.clear();
  27. int l = 1, d = 0;
  28.  
  29. for (int r = 1; r <= n; r++){
  30. if (mp[arr[r]] == 0) d++;
  31. mp[arr[r]]++;
  32.  
  33. while (d > u){
  34. mp[arr[l]]--;
  35. if (mp[arr[l]] == 0) d--;
  36. l++;
  37. }
  38.  
  39. res += r - l + 1;
  40. }
  41. }
  42.  
  43. if (m > 0)
  44. {
  45. mp.clear();
  46. int l = 1, d = 0;
  47.  
  48. for (int r = 1; r <= n; r++){
  49. if (mp[arr[r]] == 0) d++;
  50. mp[arr[r]]++;
  51.  
  52. while (d > m - 1){
  53. mp[arr[l]]--;
  54. if (mp[arr[l]] == 0) d--;
  55. l++;
  56. }
  57.  
  58. res -= r - l + 1;
  59. }
  60. }
  61.  
  62. cout << res;
  63. return 0;
  64. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
Standard output is empty