Submission #1144462

#TimeUsernameProblemLanguageResultExecution timeMemory
1144462am_aadvikSkyscraper (JOI16_skyscraper)C++20
5 / 100
1250 ms198728 KiB
#include <iostream> #include<vector> #include<cstring> #include<math.h> using namespace std; #define int long long const int mod = 1e9 + 7; vector<int> a; int n, l; vector<vector<vector<int>>> dp; int sol(int mask, int cl, int prv) { if (cl > l) return 0; if (mask == (pow(2, n) - 1)) return 1; if (dp[cl][prv][mask] != -1) return dp[cl][prv][mask]; dp[cl][prv][mask] = 0; for (int i = 0; i < n; ++i) if (!(mask & (1 << i))) dp[cl][prv][mask] = (dp[cl][prv][mask] + sol(mask | (1 << i), cl + ((prv == n) ? 0 : abs(a[prv] - a[i])), i) % mod); return dp[cl][prv][mask]; } int32_t main() { cin >> n >> l; dp.assign(l + 1, vector<vector<int>>(n + 1, vector<int>(pow(2, n), -1))); a.resize(n); for (auto& x : a) cin >> x; cout << sol(0, 0, n); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...