Submission #369512

#TimeUsernameProblemLanguageResultExecution timeMemory
369512vaavenTents (JOI18_tents)C++14
48 / 100
249 ms215744 KiB
#pragma GCC optimize("O3") #include <iostream> #include <vector> #include <algorithm> #include <math.h> #include <set> #include <stack> #include <iomanip> #include <bitset> #include <map> #include <cassert> #include <array> #include <queue> #include <cstring> #include <random> #include <unordered_set> #include <unordered_map> #define pqueue priority_queue #define pb(x) push_back(x) // #define endl '\n' #define all(x) x.begin(), x.end() #define int long long using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef vector<int> vi; typedef vector<vector<int> > vvi; // typedef tuple<ll, ll, ll> tiii; typedef pair<int, int> pii; typedef vector<pair<int, int> > vpii; typedef vector<bool> vb; typedef vector<string> vs; typedef vector<char> vc; const int inf = 1e9 + 228; const ll infll = 1e18; const ll mod = 1e9 + 7; const ll mod2 = 998244353; const ld eps = 1e-14; void fast_io(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); // freopen("a.in", "r", stdin); // freopen("outputik.txt", "w", stdout); } int dp[303][303][303]; void solve(){ int h, w; cin >> h >> w; dp[0][w][0] = 1; for(int i=1; i<=h; i++){ for(int j=0; j<=w; j++){ for(int l=0; l<=w; l++){ int add = 0; if(min(i-1, j+2) >= 0 ) add += dp[i-1][j+2][l] * (j+2) * (j+1)/2; if(i-1 >= 0) add += dp[i-1][j][l+1] * (l+1); if(min(j+1, l-1) >= 0) add += dp[i-1][j+1][l-1] * (j+1); if(j+1 >= 0) add += dp[i-1][j+1][l] * (j+1) * 4; add += dp[i-1][j][l]; add %= mod; dp[i][j][l] = add; } } } int ans = 0; for(int i=0; i<w; i++){ ans += dp[h][i][0]; ans %= mod; } cout << ans << endl; } signed main(){ fast_io(); srand(time(NULL)); cout << fixed << setprecision(10); int q = 1; // cin >> q; while(q--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...