fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. #define N int(1e6)
  4. using namespace std;
  5. ll m, n, a[2010][2010], q, f[2010][2010];
  6. ll kq(ll x1, ll x2, ll y1, ll y2)
  7. {
  8. return f[x2][y2]-f[x1-1][y2]-f[x2][y1-1]+f[x1-1][y1-1];
  9. }
  10. int main()
  11. {
  12. ios::sync_with_stdio(false);
  13. cin.tie(nullptr);
  14. cin>>m>>n;
  15. for(int i=1; i<=m; i++)
  16. {
  17. for(int j=1; j<=n; j++)
  18. {
  19. cin>>a[i][j];
  20. a[i+m][j]=a[i][j];
  21. a[i][j+n]=a[i][j];
  22. a[i+m][j+n]=a[i][j];
  23. }
  24. }
  25. for(int i=1; i<=2*m; i++)
  26. for(int j=1; j<=2*n; j++)
  27. f[i][j]=f[i-1][j]+f[i][j-1]+a[i][j]-f[i-1][j-1];
  28. cin>>q;
  29. ll l=0, r=0;
  30. while(q--)
  31. {
  32. int p;
  33. cin>>p;
  34. if(p==0)
  35. {
  36. int x, y;
  37. cin>>x>>y;
  38. l=(l+x);
  39. r=(r+y);
  40. }
  41. else
  42. {
  43. ll u, v, s, t;
  44. cin>>u>>v>>s>>t;
  45. u=(u+r);
  46. s=(s+r) ;
  47. ll len1=s-u;
  48. v=(v+l);
  49. t=(t+l) ;
  50. ll len2=t-v;
  51. u=(u-1)%m+1 ;
  52. s=u+len1;
  53. v=(v-1)%n+1;
  54. t=v+len2;
  55.  
  56. cout<<kq(min(u, s), max(u, s), min(v, t), max(v, t))<<'\n';
  57. }
  58. }
  59. return 0;
  60. }
  61.  
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
Standard output is empty