Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ll n, q;
- vector<ll> memo;
- bool is_valid(ll i)
- {
- return i >= 0 and i <= n and memo[i] != -3;
- }
- ll rec(ll target, ll start)
- {
- if (!is_valid(start))
- return 0;
- else if (memo[start] != -1)
- return memo[start];
- else if (start == n)
- return 1;
- else
- return memo[start] = (rec(target, start + 1) % MOD + rec(target, start + 2) % MOD) % MOD;
- }
- void solve()
- {
- cin >> n >> q;
- memo.resize(n + 2, -1);
- while (q--)
- {
- ll x;
- cin >> x;
- memo[x] = -3;
- }
- cout << rec(n, 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment