Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void SAB(int **array, int **arrayCopy, int n,int m){
  5.  
  6. for(int i=0;i<n;i++){
  7. for(int j=0;j<m;j++){
  8. if(i==0){
  9. arrayCopy[i][j]=array[i][j];
  10. }
  11. else{
  12. arrayCopy[i][j]=array[i][j]+arrayCopy[i-1][j];
  13. }
  14. }
  15. }
  16.  
  17. for(int i=0;i<m;i++){
  18. if(i==0){
  19. continue;
  20. }
  21. else{
  22. arrayCopy[0][i]=array[0][i]+arrayCopy[0][i-1];
  23. }
  24. }
  25.  
  26. for(int i=1;i<n;i++){
  27. for(int j=1;j<m;j++){
  28. arrayCopy[i][j]=arrayCopy[i][j]+arrayCopy[i][j-1];
  29. }
  30. }
  31. }
  32.  
  33. int main(){
  34. int n,m,width,height;
  35. long t,Lj,Li,sum;
  36. scanf("%d %d",&n,&m);
  37.  
  38. int** array = new int*[n];
  39. for(int i=0; i<n; ++i)
  40. array[i] = new int[n];
  41.  
  42. int** arrayCopy = new int*[n];
  43. for(int i=0; i<n; ++i)
  44. arrayCopy[i] = new int[n];
  45.  
  46. for(int i=0;i<n;i++){
  47. for(int j=0;j<m;j++){
  48. scanf("%d",&array[i][j]);
  49. }
  50. }
  51.  
  52. SAB(array,arrayCopy,n,m);
  53.  
  54. scanf("%ld",&t);
  55. for(int i=0;i<t;i++){
  56. sum=0;
  57.  
  58. scanf("%ld %ld %d %d",&Lj,&Li,&width,&height);
  59.  
  60. if(Lj==0){
  61. for(int j=Li;j<Li+width;j++){
  62. sum+=array[0][j];
  63. }
  64. printf("%ld\n",sum+arrayCopy[Lj-1+height][Li-1+width]-arrayCopy[Lj-1+height][Li-1]-arrayCopy[Lj][Li-1+width]+arrayCopy[Lj][Li-1]);
  65. }
  66. else if(Li==0){
  67. for(int j=Lj;j<Lj+height;j++){
  68. sum+=array[j][0];
  69. }
  70. printf("%ld\n",sum+arrayCopy[Lj-1+height][Li-1+width]-arrayCopy[Lj-1+height][Li]-arrayCopy[Lj-1][Li-1+width]+arrayCopy[Lj-1][Li]);
  71.  
  72. }
  73. else if(Li==0 && Lj==0){
  74. for(int j=Lj;j<Lj+height;j++){
  75. sum+=array[j][0];
  76. }
  77. for(int j=Li;j<Li+width;j++){
  78. sum+=array[0][j];
  79. }
  80. sum-=array[0][0];
  81. printf("%ld\n",sum+arrayCopy[Lj-1+height][Li-1+width]-arrayCopy[Lj-1+height][Li]-arrayCopy[Lj-1][Li-1+width]+arrayCopy[Lj][Li]);
  82. }
  83. else{
  84. printf("%ld\n",arrayCopy[Lj-1+height][Li-1+width]-arrayCopy[Lj-1+height][Li-1]-arrayCopy[Lj-1][Li-1+width]+arrayCopy[Lj-1][Li-1]);
  85. }
  86.  
  87.  
  88. }
  89.  
  90.  
  91.  
  92. return 0;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement