diff --git a/Number of People Aware of a Secret.cpp b/Number of People Aware of a Secret.cpp new file mode 100644 index 0000000..6c9a52d --- /dev/null +++ b/Number of People Aware of a Secret.cpp @@ -0,0 +1,19 @@ +class Solution { +public: + int peopleAwareOfSecret(int n, int delay, int forget) { + vector dp(n + 1, 0); + dp[1] = 1; + long long share = 0, MOD = 1000000007; + for (int t = 2; t <= n; t++) { + if (t - delay > 0) + share = (share + dp[t - delay] + MOD) % MOD; + if (t - forget > 0) + share = (share - dp[t - forget] + MOD) % MOD; + dp[t] = share; + } + long long know = 0; + for (int i = n - forget + 1; i <= n; i++) + know = (know + dp[i]) % MOD; + return (int)know; + } +};