ZhongJiaXuan

CF1833F - Ira and Flamenco

Dec 14th, 2023
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.94 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define int long long
  3. using namespace std;
  4. const int Mod = 1e9 + 7;
  5. const int N = 2e5 + 10;
  6. int t, n, m, ans, c;
  7. int a[N];
  8. map<int, int> cnt;
  9. int qpow(int x, int y) {
  10.     if(y == 0) return 1;
  11.     if(y == 1) return x;
  12.     int t = qpow(x, y / 2);
  13.     if (y & 1) return t * t % Mod * x % Mod;
  14.     else return t * t % Mod;
  15. }
  16. signed main() {
  17.     cin >> t;
  18.     while (t--) {
  19.         memset(a, 0, sizeof(a));
  20.         cnt.clear();
  21.         ans = 0, c = 1;
  22.         cin >> n >> m;
  23.         for (int i = 1; i <= n; i++) {
  24.             cin >> a[i];
  25.             cnt[a[i]]++;
  26.         }
  27.         sort(a + 1, a + 1 + n);
  28.         n = unique(a + 1, a + 1 + n) - a - 1;
  29.         for (int i = 1, j = 1; i <= n; ++i) {
  30.             while (j <= n && a[j] < a[i] + m) c = c * (cnt[a[j]]) % Mod, ++j;
  31.             if (j - i == m) ans += c, ans %= Mod;
  32.             c = c * qpow(cnt[a[i]], Mod - 2) % Mod;
  33.         }
  34.         cout << ans << '\n';
  35.     }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment