Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <cmath>
- #include <ctime>
- #include <cstring>
- #include <cstdlib>
- #include <string>
- #include <vector>
- #include <cfloat>
- using namespace std;
- #define f first
- #define s second
- #define mp make_pair
- #define pb push_back
- #define INF (1<<30)
- #define ll long long
- #define PI 3.1415926535897932
- #define EPS 1e-9
- #define sqr(x) ((x)*(x))
- //#define NC
- //#define NM
- //const int X[]={-1,-2,1,2,-1,-2,1,2},Y[]={-2,-1,-2,-1,2,1,2,1};//????
- //const int X[]={-1,0,1,0},Y[]={0,1,0,-1};
- const int MOD = 1000000007;
- class SRMSystemTestPhase {
- public:
- int countWays(vector <string> a)
- {
- int dp[55][4][4][4] = {0}, n = a.size();
- for (int i = 0, g1 = (a[0][0] == 'Y' ? 3 : 1); i < g1; i++)
- for (int j = 0, g2 = (a[0][1] == 'Y' ? 3 : 1); j < g2; j++)
- for (int k = 0, g3 = (a[0][2] == 'Y' ? 3 : 1); k < g3; k++)
- dp[0][i][j][k] = 1;
- for (int l = 0; l < n - 1; l++)
- for (int i = 0, g1 = (a[l][0] == 'Y' ? 3 : 1); i < g1; i++)
- for (int j = 0, g2 = (a[l][1] == 'Y' ? 3 : 1); j < g2; j++)
- for (int k = 0, g3 = (a[l][2] == 'Y' ? 3 : 1); k < g3; k++)
- for (int i1 = 0, g21 = (a[l + 1][0] == 'Y' ? 3 : 1); i1 < g21; i1++)
- for (int j1 = 0, g22 = (a[l + 1][1] == 'Y' ? 3 : 1); j1 < g22; j1++)
- for (int k1 = 0, g23 = (a[l + 1][2] == 'Y' ? 3 : 1); k1 < g23; k1++)
- {
- int pas1 = (i == 2) + (j == 2) + (k == 2);
- int ch1 = (i == 1) + (j == 1) + (k == 1);
- int pas2 = (i1 == 2) + (j1 == 2) + (k1 == 2);
- int ch2 = (i1 == 1) + (j1 == 1) + (k1 == 1);
- if (pas1 > pas2 || pas1 == pas2 && ch1 <= ch2)
- dp[l + 1][i1][j1][k1] = (dp[l + 1][i1][j1][k1] + dp[l][i][j][k]) % MOD;
- }
- int ans = 0;
- for (int i = 0, g1 = (a[n - 1][0] == 'Y' ? 3 : 1); i < g1; i++)
- for (int j = 0, g2 = (a[n - 1][1] == 'Y' ? 3 : 1); j < g2; j++)
- for (int k = 0, g3 = (a[n - 1][2] == 'Y' ? 3 : 1); k < g3; k++)
- ans = (ans + dp[n - 1][i][j][k]) % MOD;
- return ans;
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement