fork download
  1. // PhuThuyRuntime <3
  2. // A secret makes a woman woman
  3.  
  4. #include <bits/stdc++.h>
  5.  
  6. using namespace std;
  7.  
  8. #define pb push_back
  9. #define fo(i, l, r) for(int i = l; i <= r; i++)
  10. #define foi(i, l, r) for(int i = l; i >= r; i--)
  11. #define elif else if
  12. #define el cout << "\n";
  13. #define pii pair<int, int>
  14. #define pli pair<ll, int>
  15. #define pll pair<ll, ll>
  16. #define pil pair<int, ll>
  17. #define fi first
  18. #define se second
  19. #define in(x) freopen(x, "r", stdin)
  20. #define out(x) freopen(x, "w", stdout)
  21. #define ll long long
  22. #define pob pop_back
  23. #define bs binary_search
  24. #define vi vector<int>
  25. #define vii vector<pair<int, int>>
  26. #define getbit(i, j) (i >> j) & 1
  27. #define offbit(i, j) (1 << j) ^ i
  28. #define onbit(i, j) (1 << j) | i
  29. const int N = 1e5 + 1;
  30. const ll mod = 1e9 + 7;
  31. const int inf = INT_MAX;
  32. const int base = 31;
  33. const double EPS = 1e-9;
  34. const double pi = acos(-1.0);
  35. int n, L, U;
  36. ll a[20 * N];
  37. void inp(){
  38. cin >> n >> L >> U;
  39. fo(i, 1, n) cin >> a[i];
  40. }
  41. void sol(){
  42. int lo = 1, hi = 1;
  43. set<ll> s;
  44. multiset<ll> ms;
  45. ll ans = 0;
  46. for(int l = 1, r = 1; r <= n; r++){
  47. s.insert(a[r]);
  48. ms.insert(a[r]);
  49. if(s.size() < L) continue;
  50. while(s.size() > U){
  51. if(ms.count(a[l]) == 1){
  52. ms.erase(a[l]);
  53. s.erase(a[l]);
  54. }
  55. else if(ms.count(a[l]) >= 2){
  56. ms.erase(ms.find(a[l]));
  57. }
  58. l++;
  59. }
  60. ans += r - l + 1LL - L + 1;
  61. }
  62. cout << ans;
  63. }
  64. int main(){
  65. ios_base::sync_with_stdio(false);
  66. cin.tie(NULL);
  67. inp();
  68. sol();
  69. return 0;
  70. }
  71.  
Success #stdin #stdout 0.01s 5364KB
stdin
Standard input is empty
stdout
Standard output is empty