fork download
  1. #include <bits/stdc++.h>
  2.  
  3. #define ll long long
  4. #define el cout << '\n'
  5.  
  6. using namespace std;
  7.  
  8. const int maxn = 5e2;
  9.  
  10. int n, m, q, r = 0, d = 0;
  11. ll a[2 * maxn + 10][2 * maxn + 10], pre[2 * maxn + 10][2 * maxn + 10];
  12.  
  13. ll getsum(ll xa, ll ya, ll xb, ll yb)
  14. {
  15. return pre[xb][yb] - pre[xb][ya - 1] - pre[xa - 1][yb] + pre[xa - 1][ya - 1];
  16. }
  17.  
  18. int main()
  19. {
  20. ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  21. if (fopen("SOLPIN.INP", "r"))
  22. {
  23. freopen("SOLPIN.INP", "r", stdin);
  24. freopen("SOLPIN.OUT", "w", stdout);
  25. }
  26.  
  27. cin >> n >> m;
  28. for (int i = 1; i <= n; i++)
  29. for (int j = 1; j <= m; j++)
  30. cin >> a[i][j];
  31. for (int i = 1; i <= n; i++)
  32. for (int j = m + 1; j <= 2 * m; j++)
  33. a[i][j] = a[i][j - m];
  34. for (int i = n + 1; i <= 2 * n; i++)
  35. for (int j = 1; j <= 2 * m; j++)
  36. a[i][j] = a[i - n][j];
  37. for (int i = 1; i <= 2 * n; i++)
  38. {
  39. for (int j = 1; j <= 2 * m; j++)
  40. pre[i][j] = pre[i - 1][j] + pre[i][j - 1] - pre[i - 1][j - 1] + a[i][j];
  41. }
  42. cin >> q;
  43.  
  44. while (q--)
  45. {
  46. int p;
  47. cin >> p;
  48. if (p == 0)
  49. {
  50. int x, y;
  51. cin >> x >> y;
  52. (r += x) %= m;
  53. (d += y) %= n;
  54. }
  55. else
  56. {
  57. int xa, ya, xb, yb;
  58. cin >> xa >> ya >> xb >> yb;
  59. xa += d;
  60. xb += d;
  61. ya += r;
  62. yb += r;
  63. cout << getsum(xa, ya, xb, yb), el;
  64. }
  65. }
  66. }
  67.  
Success #stdin #stdout 0.01s 5272KB
stdin
Standard input is empty
stdout
Standard output is empty