Advertisement
Guest User

Untitled

a guest
Sep 29th, 2014
573
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. const int Maxm = 1000;
  6. const int Maxn = 101;
  7. const int Inf = 1000000000;
  8. const int Maxd = 5;
  9. const int dy[Maxd] = {-1, 0, 1, 0, 0};
  10. const int dx[Maxd] = {0, -1, 0, 1, 0};
  11.  
  12. int T;
  13. int m;
  14. int t[Maxm], x[Maxm], y[Maxm];
  15. char typ[Maxn][Maxn][Maxn];
  16. int got[Maxn][Maxn][Maxn];
  17.  
  18. int Solve(char need, char av)
  19. {
  20.     fill((int*)got, (int*)got + Maxn * Maxn, 0);
  21.     fill((int*)got + Maxn * Maxn, (int*)got + Maxn * Maxn * Maxn, -Inf);
  22.     int res = 0;
  23.     for (int t = 0; t < Maxn; t++)
  24.         for (int i = 0; i < Maxn; i++)
  25.             for (int j = 0; j < Maxn; j++) if (got[t][i][j] >= 0) {
  26.                 if (typ[t][i][j] == need) got[t][i][j]++;
  27.                 else if (typ[t][i][j] == av) got[t][i][j] = -Inf;
  28.                 res = max(res, got[t][i][j]);
  29.                 if (t + 1 < Maxn)
  30.                     for (int d = 0; d < Maxd; d++) {
  31.                         int ni = i + dy[d], nj = j + dx[d];
  32.                         if (0 <= ni && ni < Maxn && 0 <= nj && nj < Maxn)
  33.                             got[t + 1][ni][nj] = max(got[t + 1][ni][nj], got[t][i][j]);
  34.                     }
  35.             }
  36.     return res;
  37. }
  38.  
  39. int main()
  40. {
  41.     fill((char*)typ, (char*)typ + Maxn * Maxn * Maxn, '.');
  42.     scanf("%d", &T);
  43.     for (int tc = 1; tc <= T; tc++) {
  44.         scanf("%d", &m);
  45.         for (int i = 0; i < m; i++) {
  46.             char q; scanf("%d %d %d %c", &t[i], &x[i], &y[i], &q);
  47.             typ[t[i]][x[i]][y[i]] = q;
  48.         }
  49.         printf("Case #%d: %d %d\n", tc, Solve('u', 'a'), Solve('a', 'u'));
  50.         for (int i = 0; i < m; i++)
  51.             typ[t[i]][x[i]][y[i]] = '.';
  52.     }
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement