Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define int long long
- using namespace std;
- const int Mod = 1e9 + 7;
- const int N = 2e5 + 10;
- int t, n, m, ans, c;
- int a[N];
- map<int, int> cnt;
- int qpow(int x, int y) {
- if(y == 0) return 1;
- if(y == 1) return x;
- int t = qpow(x, y / 2);
- if (y & 1) return t * t % Mod * x % Mod;
- else return t * t % Mod;
- }
- signed main() {
- cin >> t;
- while (t--) {
- memset(a, 0, sizeof(a));
- cnt.clear();
- ans = 0, c = 1;
- cin >> n >> m;
- for (int i = 1; i <= n; i++) {
- cin >> a[i];
- cnt[a[i]]++;
- }
- sort(a + 1, a + 1 + n);
- n = unique(a + 1, a + 1 + n) - a - 1;
- for (int i = 1, j = 1; i <= n; ++i) {
- while (j <= n && a[j] < a[i] + m) c = c * (cnt[a[j]]) % Mod, ++j;
- if (j - i == m) ans += c, ans %= Mod;
- c = c * qpow(cnt[a[i]], Mod - 2) % Mod;
- }
- cout << ans << '\n';
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment