Submission #755979

#TimeUsernameProblemLanguageResultExecution timeMemory
755979vjudge1A Huge Tower (CEOI10_tower)C++17
40 / 100
1049 ms262144 KiB
#include<bits/stdc++.h> #include<ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; typedef long long ll; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> indexed_set; const ll MOD = 1e9 + 9; ll mod(ll x, ll m = MOD){return (x + m) % m;} typedef vector<int> vi; typedef vector<ll> vll; typedef pair<ll,ll> pll; typedef vector<pair<int,int>> vpi; #define pb push_back #define ff first #define ss second #define all(x) (x).begin(),(x).end() const int nax = 504; const int bnax = 20; int n, d; vi A; ll dp[bnax][(1 << bnax)]; ll f(int i, int mask) { if(dp[i][mask] != -1) return dp[i][mask]; if(mask == (1 << n) - 1) return dp[i][mask] = 1ll; ll ans = 0ll; for(int j =0; j < n; j++) { if(((1 << j) & mask) == 0) { if(A[j] <= A[i] + d) { ans = mod(ans + f(j, mask + (1 << j))); } } } return dp[i][mask] = ans; } void solve() { memset(dp, -1, sizeof(dp)); cin >> n >> d; A.resize(n); for(int i = 0; i < n; i++) cin >> A[i]; ll ans = 0ll; for(int i = 0; i < n; i++) { ans = mod(ans + f(i, (1 << i))); } cout << ans; } int32_t main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int tt = 1; //cin >> tt; while(tt--) solve(); }
#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...