Skip to content

Commit d085353

Browse files
SmitMangukiyaMohamad655
authored andcommitted
Create F.cpp
1 parent 27a6d60 commit d085353

File tree

1 file changed

+62
-0
lines changed
  • Codeforces_Contests/7_Round_674_Div_3

1 file changed

+62
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
#define int long long
5+
#define ll long long
6+
#define pb push_back
7+
#define mp make_pair
8+
#define f(i,a,n) for(int i=a ; i<n ; i++)
9+
#define rf(i,n,a) for(int i=n ; i>=a ; i--)
10+
#define F first
11+
#define S second
12+
#define all(c) (c).begin(),(c).end()
13+
#define sz(v) (int)(v).size()
14+
#define fast ios::sync_with_stdio(0); cin.tie(0); cout.tie(0)
15+
16+
typedef long double ld;
17+
typedef vector<int> vi;
18+
typedef pair<int, int> pii;
19+
typedef pair<pii, int> ppi;
20+
typedef vector<pii> vpi;
21+
22+
const int inf = 1e9;
23+
const int inf64 = 1e18;
24+
const int MOD = inf + 7;
25+
26+
int32_t main() {
27+
fast;
28+
int n;
29+
cin >> n;
30+
31+
string s;
32+
cin >> s;
33+
34+
vector<vector<int>> dp(n + 1, vector<int>(3, 0));
35+
36+
int cur = 1;
37+
38+
for (int i = 1 ; i <= n ; i++) {
39+
if (s[i - 1] == 'a' || s[i - 1] == '?') {
40+
dp[i][0] = dp[i - 1][0] + cur;
41+
dp[i][1] = dp[i - 1][1];
42+
dp[i][2] = dp[i - 1][2];
43+
}
44+
if (s[i - 1] == 'b' || s[i - 1] == '?') {
45+
dp[i][0] += dp[i - 1][0];
46+
dp[i][1] += dp[i - 1][1] + dp[i - 1][0];
47+
dp[i][2] += dp[i - 1][2];
48+
}
49+
if (s[i - 1] == 'c' || s[i - 1] == '?') {
50+
dp[i][0] += dp[i - 1][0];
51+
dp[i][1] += dp[i - 1][1];
52+
dp[i][2] += dp[i - 1][2] + dp[i - 1][1];
53+
}
54+
if (s[i - 1] == '?') {
55+
cur = (cur * 3) % MOD;
56+
}
57+
dp[i][0] %= MOD;
58+
dp[i][1] %= MOD;
59+
dp[i][2] %= MOD;
60+
}
61+
cout << dp[n][2] << "\n";
62+
}

0 commit comments

Comments
 (0)