제출 #459546

#제출 시각아이디문제언어결과실행 시간메모리
459546erkeA Huge Tower (CEOI10_tower)C++11
30 / 100
1066 ms11556 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

const int N = 1000005;
const int MOD = 1e9 + 7;

int a[N], dp[N];

signed main() {
  cin.tie(0)->sync_with_stdio(0);
  int n, d;
  cin >> n >> d;
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  sort(a + 1, a + n + 1, greater<int>());
  dp[0] = 1;
  for (int i = 1; i <= n; i++) {
    int j = i;
    while (j - 1 >= 1 && a[j - 1] <= a[i] + d) j--;
    dp[i] += dp[i - 1] * (i - j + 1);
    dp[i] %= MOD;
  }
  cout << dp[n] << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...