Submission #1258206

#TimeUsernameProblemLanguageResultExecution timeMemory
1258206akanna9194A Huge Tower (CEOI10_tower)C++20
100 / 100
102 ms5188 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
const ll MOD = 1'000'000'009; // Proper constant declaration

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n, d;
    cin >> n >> d;

    vector<ll> arr(n);
    for (auto &ref : arr) cin >> ref;

    sort(arr.begin(), arr.end());

    ll ans = 1; // Start with first block
    for (int i = 1; i < n; i++) {
        ll curr_width = arr[i];

        // Find the first block with width >= curr_width - d
        ll start = lower_bound(arr.begin(), arr.begin() + i, curr_width - d) - arr.begin();

        ll k = i - start; // number of blocks the new block can be placed above
        ans = (ans + (ans * k) % MOD) % MOD;
    }

    cout << ans << '\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...