Submission #1177958

#TimeUsernameProblemLanguageResultExecution timeMemory
1177958ericl23302A Huge Tower (CEOI10_tower)C++20
100 / 100
90 ms14920 KiB
#include <iostream>
#include <vector>
#include <algorithm>

#define int long long

using namespace std;

signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int n, d; cin >> n >> d;
    vector<int> blocks(n);
    for (int &i: blocks) cin >> i;
    sort(blocks.begin(), blocks.end());
    vector<int> canPlace(n, 0);
    int cur = n - 1;
    for (int i = n - 1; i >= 0; --i) {
        while (cur >= 0 && blocks[i] - blocks[cur] <= d) --cur;
        canPlace[i] = n - cur - 2;
    }

    vector<int> res(n, 1);
    for (int i = 1; i < n; ++i) res[i] = (res[i - 1] * (i - n + canPlace[i] + 2)) % 1'000'000'009;
    // for (int &i : canPlace) cout << i << ' ';
    // cout << '\n';
    // for (int &i : res) cout << i << ' ';
    // cout << '\n';
    cout << res.back() << '\n';

    return 0;
}
#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...