Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void SAB(int **array, int **arrayCopy, int n,int m){
- for(int i=0;i<n;i++){
- for(int j=0;j<m;j++){
- if(i==0){
- arrayCopy[i][j]=array[i][j];
- }
- else{
- arrayCopy[i][j]=array[i][j]+arrayCopy[i-1][j];
- }
- }
- }
- for(int i=0;i<m;i++){
- if(i==0){
- continue;
- }
- else{
- arrayCopy[0][i]=array[0][i]+arrayCopy[0][i-1];
- }
- }
- for(int i=1;i<n;i++){
- for(int j=1;j<m;j++){
- arrayCopy[i][j]=arrayCopy[i][j]+arrayCopy[i][j-1];
- }
- }
- }
- int main(){
- int n,m,width,height;
- long t,Lj,Li,sum;
- scanf("%d %d",&n,&m);
- int** array = new int*[n];
- for(int i=0; i<n; ++i)
- array[i] = new int[n];
- int** arrayCopy = new int*[n];
- for(int i=0; i<n; ++i)
- arrayCopy[i] = new int[n];
- for(int i=0;i<n;i++){
- for(int j=0;j<m;j++){
- scanf("%d",&array[i][j]);
- }
- }
- SAB(array,arrayCopy,n,m);
- scanf("%ld",&t);
- for(int i=0;i<t;i++){
- sum=0;
- scanf("%ld %ld %d %d",&Lj,&Li,&width,&height);
- if(Lj==0){
- for(int j=Li;j<Li+width;j++){
- sum+=array[0][j];
- }
- 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]);
- }
- else if(Li==0){
- for(int j=Lj;j<Lj+height;j++){
- sum+=array[j][0];
- }
- 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]);
- }
- else if(Li==0 && Lj==0){
- for(int j=Lj;j<Lj+height;j++){
- sum+=array[j][0];
- }
- for(int j=Li;j<Li+width;j++){
- sum+=array[0][j];
- }
- sum-=array[0][0];
- 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]);
- }
- else{
- 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]);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement