Submission #1315665

#TimeUsernameProblemLanguageResultExecution timeMemory
1315665thesimpleoneA Huge Tower (CEOI10_tower)C++20
45 / 100
363 ms327680 KiB
/// *** --- ||| In the name of ALLAH ||| --- *** /// #include <bits/stdc++.h> using namespace std; #define fastio() ios_base::sync_with_stdio(false); cin.tie(NULL) #define ll long long #define MOD 1000000009 int main() { fastio(); int n; ll d; cin >> n >> d; vector<ll> h(n); for (int i = 0; i < n; i++) { cin >> h[i]; } int mx = 1 << n; // safe because n <= 20 vector<vector<ll>> dp(mx, vector<ll>(n, 0)); // Base case: one block as bottom for (int i = 0; i < n; i++) { dp[1 << i][i] = 1; } // Bitmask DP for (int mask = 0; mask < mx; mask++) { for (int last = 0; last < n; last++) { // last must be used if ((mask & (1 << last)) == 0) continue; if (dp[mask][last] == 0) continue; for (int nxt = 0; nxt < n; nxt++) { // nxt must be unused if ((mask & (1 << nxt)) != 0) continue; // size constraint if (h[nxt] <= h[last] + d) { int newMask = mask | (1 << nxt); dp[newMask][nxt] = (dp[newMask][nxt] + dp[mask][last]) % MOD; } } } } // Collect answer ll ans = 0; int fullMask = mx - 1; for (int i = 0; i < n; i++) { ans = (ans + dp[fullMask][i]) % 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...