Advertisement
Guest User

Untitled

a guest
Mar 18th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.04 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3. #include <cstdio>
  4. #include <set>
  5. #include <vector>
  6. #include <map>
  7. #include <cmath>
  8. #include <algorithm>
  9. #include <memory.h>
  10. #include <string>
  11. #include <cstring>
  12. #include <sstream>
  13. #include <cstdlib>
  14. #include <ctime>
  15. #include <cassert>
  16.  
  17. using namespace std;
  18.  
  19. int cnt[44][44][44][44];
  20. int a[44][44], f[44][44];
  21.  
  22. int main() {
  23.   int n, m, q;
  24.   scanf("%d %d %d", &n, &m, &q);
  25.   for (int i = 1; i <= n; i++)
  26.     for (int j = 1; j <= m; j++) {
  27.       char ch = getchar();
  28.       while (ch != '0' && ch != '1') ch = getchar();
  29.       a[i][j] = (ch == '1');
  30.     }
  31.   for (int i = 0; i <= n; i++)
  32.     for (int j = 0; j <= m; j++)
  33.       if (i == 0 || j == 0) f[i][j] = 0;
  34.       else f[i][j] = f[i - 1][j] + f[i][j - 1] - f[i - 1][j - 1] + a[i][j];
  35.   for (int xa = 1; xa <= n; xa++)
  36.     for (int ya = 1; ya <= m; ya++)
  37.       for (int xb = xa; xb <= n; xb++)
  38.         for (int yb = ya; yb <= m; yb++) {
  39.           int sum = f[xb][yb] - f[xa - 1][yb] - f[xb][ya - 1] + f[xa - 1][ya - 1];
  40.           cnt[xa][ya][xb][yb] = (sum == 0);
  41.         }
  42.   for (int xa = n; xa >= 2; xa--)
  43.     for (int ya = 1; ya <= m; ya++)
  44.       for (int xb = xa; xb <= n; xb++)
  45.         for (int yb = ya; yb <= m; yb++)
  46.             cnt[xa - 1][ya][xb][yb] += cnt[xa][ya][xb][yb];
  47.  
  48.   for (int xa = 1; xa <= n; xa++)
  49.     for (int ya = m; ya >= 2; ya--)
  50.       for (int xb = xa; xb <= n; xb++)
  51.         for (int yb = ya; yb <= m; yb++)
  52.             cnt[xa][ya - 1][xb][yb] += cnt[xa][ya][xb][yb];
  53.  
  54.   for (int xa = 1; xa <= n; xa++)
  55.     for (int ya = 1; ya <= m; ya++)
  56.       for (int xb = xa; xb <= n; xb++)
  57.         for (int yb = ya; yb <= m; yb++)
  58.             cnt[xa][ya][xb + 1][yb] += cnt[xa][ya][xb][yb];
  59.  
  60.   for (int xa = 1; xa <= n; xa++)
  61.     for (int ya = 1; ya <= m; ya++)
  62.       for (int xb = xa; xb <= n; xb++)
  63.         for (int yb = ya; yb <= m; yb++)
  64.             cnt[xa][ya][xb][yb + 1] += cnt[xa][ya][xb][yb];
  65.  
  66.   while (q--) {
  67.     int xa, ya, xb, yb;
  68.     scanf("%d %d %d %d", &xa, &ya, &xb, &yb);
  69.     printf("%d\n", cnt[xa][ya][xb][yb]);
  70.   }
  71.   return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement