Advertisement
bor

SRM 552, Div 1, 500, Brute Force

bor
Aug 19th, 2012
324
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.50 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cstring>
  4. #include <vector>
  5. #include <string>
  6. using namespace std;
  7.  
  8. const int N = 33;
  9.  
  10. int L[N][N], P[N][N], atLeft[N][N * N], atUp[N][N * N];
  11.  
  12. struct FoxAndFlowerShopDivOne {
  13.     int theMaxFlowers(const vector<string>& f, int md) {
  14.         int i0, i1, i2, i3, j0, j1, j2, j3, n = f.size(), m = f.front().size();
  15.         int a0, b0, d0, a1, b1, d1;
  16.         int ans = -1;
  17.         memset(L, 0, sizeof L);
  18.         memset(P, 0, sizeof P);
  19.         for (i1 = 1; i1 <= n; ++i1) {
  20.             for (j1 = 1; j1 <= m; ++j1) {
  21.                 L[i1][j1] = L[i1 - 1][j1] + L[i1][j1 - 1] - L[i1 - 1][j1 - 1] + (f[i1 - 1][j1 - 1] == 'L');
  22.                 P[i1][j1] = P[i1 - 1][j1] + P[i1][j1 - 1] - P[i1 - 1][j1 - 1] + (f[i1 - 1][j1 - 1] == 'P');
  23.             }
  24.         }
  25.         for (i1 = 1; i1 <= n; ++i1) {
  26.             for (j1 = 1; j1 <= m; ++j1) {
  27.                 for (i0 = 0; i0 < i1; ++i0) {
  28.                     for (j0 = 0; j0 < j1; ++j0) {
  29.                         for (i3 = 1; i3 <= n; ++i3) {
  30.                             for (j3 = 1; j3 <= m; ++j3) {
  31.                                 for (i2 = 0; i2 < i3; ++i2) {
  32.                                     for (j2 = 0; j2 < j3; ++j2) {
  33.                                         if (j3 <= j0 || j1 <= j2 || i1 <= i2 || i3 <= i0) {
  34.                                             a0 = L[i1][j1] - L[i0][j1] - L[i1][j0] + L[i0][j0];
  35.                                             b0 = P[i1][j1] - P[i0][j1] - P[i1][j0] + P[i0][j0];
  36.                                             d0 = abs(a0 - b0);
  37.                                             a1 = L[i3][j3] - L[i2][j3] - L[i3][j2] + L[i2][j2];
  38.                                             b1 = P[i3][j3] - P[i2][j3] - P[i3][j2] + P[i2][j2];
  39.                                             d1 = abs(a1 - b1);
  40.                                             if (d0 + d1 <= md && ans < a0 + b0 + a1 + b1) {
  41.                                                 ans = a0 + b0 + a1 + b1;
  42.                                                 // printf("%d (%d %d %d %d) (%d %d %d %d)\n", ans, 0, j0, i1, j1, i2, j2, i3, j3);
  43.                                             }
  44.                                         }
  45.                                     }
  46.                                 }
  47.                             }
  48.                         }
  49.                     }
  50.                 }
  51.             }
  52.         }
  53.         return ans;
  54.     }
  55. };
  56.  
  57. #define ARRSIZE(x) (sizeof(x)/sizeof(x[0]))
  58.  
  59. int main() {
  60.     string flowersARRAY[] = {
  61.         "LLLP..LLP.PLL.LL..LP",
  62.         "L.PL.L.LLLL.LPLLPLP.",
  63.         "PLL.LL.LLL..PL...L..",
  64.         ".LPPP.PPPLLLLPLP..PP",
  65.         "LP.P.PPL.L...P.L.LLL",
  66.         "L..LPLPP.PP...PPPL..",
  67.         "PP.PLLL.LL...LP..LP.",
  68.         "PL...P.PPPL..PLP.L..",
  69.         "P.PPPLPLP.LL.L.LLLPL",
  70.         "PLLPLLP.LLL.P..P.LPL",
  71.         "..LLLPLPPPLP.P.LP.LL",
  72.         "..LP..L..LLPPP.LL.LP",
  73.         "LPLL.PLLPPLP...LL..P",
  74.         "LL.....PLL.PLL.P....",
  75.         "LLL...LPPPPL.PL...PP",
  76.         ".PLPLLLLP.LPP...L...",
  77.         "LL...L.LL.LLLPLPPPP.",
  78.         "PLPLLLL..LP.LLPLLLL.",
  79.         "PP.PLL..L..LLLPPL..P",
  80.         ".LLPL.P.PP.P.L.PLPLL"};
  81.     vector <string> flowers( flowersARRAY, flowersARRAY+ARRSIZE(flowersARRAY) );
  82.     FoxAndFlowerShopDivOne theObject;
  83.     printf("%d, expected %d\n", theObject.theMaxFlowers(flowers, 9), 208);
  84.     return 0;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement