Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll long long
- #define to_str(x) static_cast< std::ostringstream & >( \
- ( std::ostringstream() << std::dec << x ) ).str()
- using namespace std;
- string s;
- ll dp[1000006][10];
- map<int, char> mp;
- ll solve(int index, int found) {
- if (found == 8)
- return 1;
- if (index == (ll) s.size())
- return 0;
- if (dp[index][found] != -1)
- return dp[index][found];
- ll ans = 0;
- char ch = mp[found];
- for (int i = index; i < (int) s.size(); ++i) {
- if (s[i] != ch)
- continue;
- ans += solve(i + 1, found + 1);
- }
- return dp[index][found] = ans;
- }
- int main() {
- // freopen("input.txt", "r", stdin);
- // freopen("output.txt", "w", stdout);
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- mp[0] = 'E';
- mp[1] = 'N';
- mp[2] = 'G';
- mp[3] = 'I';
- mp[4] = 'N';
- mp[5] = 'E';
- mp[6] = 'E';
- mp[7] = 'R';
- memset(dp, -1, sizeof dp);
- cin >> s;
- ll ans = solve(0, 0);
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement