Submission #534915

#TimeUsernameProblemLanguageResultExecution timeMemory
534915devariaotaA Huge Tower (CEOI10_tower)C++17
0 / 100
133 ms262148 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 21, M = 1e9 + 9; int a[N], n, d; ll dp[N][(1<<N)]; ll rek(int pos, int msk){ if(dp[pos][msk] != -1) return dp[pos][msk]; if(__builtin_popcount(msk) == n-1){ for(int i=0;i<n;i++) { if(msk & (1 << i)) continue; return dp[pos][msk] = a[i] <= a[pos] + d; } } ll ret = 0; for(int i=0;i<n;i++){ if(msk & (1 << i)) continue; if(a[i] <= a[pos] + d) ret = (ret + rek(i, msk | (1 << i))) % M; } return dp[pos][msk] = ret; } int main(){ cin.tie(0) -> ios_base::sync_with_stdio(0); memset(dp, -1, sizeof dp); cin >> n >> d; for(int i=0;i<n;i++) cin >> a[i]; sort(a, a+n); ll ans = 0; for(int i=0;i<n;i++) ans = (ans + rek(i, (1<<i))) % M; cout << ans; }
#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...