Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstdlib>
- #include <cstring>
- #include <vector>
- #include <string>
- using namespace std;
- const int N = 33;
- int L[N][N], P[N][N], atLeft[N][N * N], atUp[N][N * N];
- struct FoxAndFlowerShopDivOne {
- int theMaxFlowers(const vector<string>& f, int md) {
- int i0, i1, i2, i3, j0, j1, j2, j3, n = f.size(), m = f.front().size();
- int a0, b0, d0, a1, b1, d1;
- int ans = -1;
- memset(L, 0, sizeof L);
- memset(P, 0, sizeof P);
- for (i1 = 1; i1 <= n; ++i1) {
- for (j1 = 1; j1 <= m; ++j1) {
- L[i1][j1] = L[i1 - 1][j1] + L[i1][j1 - 1] - L[i1 - 1][j1 - 1] + (f[i1 - 1][j1 - 1] == 'L');
- P[i1][j1] = P[i1 - 1][j1] + P[i1][j1 - 1] - P[i1 - 1][j1 - 1] + (f[i1 - 1][j1 - 1] == 'P');
- }
- }
- for (i1 = 1; i1 <= n; ++i1) {
- for (j1 = 1; j1 <= m; ++j1) {
- for (i0 = 0; i0 < i1; ++i0) {
- for (j0 = 0; j0 < j1; ++j0) {
- for (i3 = 1; i3 <= n; ++i3) {
- for (j3 = 1; j3 <= m; ++j3) {
- for (i2 = 0; i2 < i3; ++i2) {
- for (j2 = 0; j2 < j3; ++j2) {
- if (j3 <= j0 || j1 <= j2 || i1 <= i2 || i3 <= i0) {
- a0 = L[i1][j1] - L[i0][j1] - L[i1][j0] + L[i0][j0];
- b0 = P[i1][j1] - P[i0][j1] - P[i1][j0] + P[i0][j0];
- d0 = abs(a0 - b0);
- a1 = L[i3][j3] - L[i2][j3] - L[i3][j2] + L[i2][j2];
- b1 = P[i3][j3] - P[i2][j3] - P[i3][j2] + P[i2][j2];
- d1 = abs(a1 - b1);
- if (d0 + d1 <= md && ans < a0 + b0 + a1 + b1) {
- ans = a0 + b0 + a1 + b1;
- // printf("%d (%d %d %d %d) (%d %d %d %d)\n", ans, 0, j0, i1, j1, i2, j2, i3, j3);
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return ans;
- }
- };
- #define ARRSIZE(x) (sizeof(x)/sizeof(x[0]))
- int main() {
- string flowersARRAY[] = {
- "LLLP..LLP.PLL.LL..LP",
- "L.PL.L.LLLL.LPLLPLP.",
- "PLL.LL.LLL..PL...L..",
- ".LPPP.PPPLLLLPLP..PP",
- "LP.P.PPL.L...P.L.LLL",
- "L..LPLPP.PP...PPPL..",
- "PP.PLLL.LL...LP..LP.",
- "PL...P.PPPL..PLP.L..",
- "P.PPPLPLP.LL.L.LLLPL",
- "PLLPLLP.LLL.P..P.LPL",
- "..LLLPLPPPLP.P.LP.LL",
- "..LP..L..LLPPP.LL.LP",
- "LPLL.PLLPPLP...LL..P",
- "LL.....PLL.PLL.P....",
- "LLL...LPPPPL.PL...PP",
- ".PLPLLLLP.LPP...L...",
- "LL...L.LL.LLLPLPPPP.",
- "PLPLLLL..LP.LLPLLLL.",
- "PP.PLL..L..LLLPPL..P",
- ".LLPL.P.PP.P.L.PLPLL"};
- vector <string> flowers( flowersARRAY, flowersARRAY+ARRSIZE(flowersARRAY) );
- FoxAndFlowerShopDivOne theObject;
- printf("%d, expected %d\n", theObject.theMaxFlowers(flowers, 9), 208);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement