This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <bits/stdc++.h>
#define F(end) for(int i =0; i< end; i++)
#define ll long long
using namespace std;
int ps[1000][1000];
const int mod = 1e9+7;
ll calc(int x1, int y1, int x2, int y2){
    return (ps[max(x1, x2)][max(y1, y2)] + ps[min(x1, x2)-1][min(y1, y2)-1] - ps[min(x1, x2)-1][max(y1, y2)] - ps[max(x1, x2)][min(y1, y2)-1]) % mod;
}
int main()
{
    int n, q; cin>>n>>q; bool filled = false;
    int grid [2*n+2][2*n+2]; int layer = 0; grid[n+1][n+1] = 1; int cnt=1; int init=1;
    while(layer<n){
        layer++;
        for(int i=1; i<=2*layer; i++){
            init++;
            grid[n+layer+1][n-layer +i+1] = init;
        }
        for(int i=1; i<=2*layer; i++){
            init++;
            grid[n+layer - i +1][n+layer+1] = init;
        }
         for(int i=1; i<=2*layer; i++){
            init++;
            grid[n-layer+1][n+layer - i+1] = init;
        }
         for(int i=1; i<=2*layer; i++){
            init++;
            grid[n-layer + i+1][n -layer+1] = init;
        }
    }
  /*  for(int i=2*n+1; i>=1; i--){
        for(int j=1; j<=2*n+1; j++){
            cout<<grid[j][i]<<" ";
        }
        cout<<endl;
    }
    */
    F(2*n+2) ps[i][0] = 0;
    F(2*n+2) ps[0][i] = 0;
    for(int i = 1; i<=2*n+1; i++){
        for(int j=1; j<=2*n+1; j++){
                ps[i][j] = grid[i][j] + ps[i-1][j]+ps[i][j-1] - ps[i-1][j-1];
        }
    }
    F(q){
        int x1, x2, y1, y2; cin>>x1>>y1>>x2>>y2; x1+=n+1; y1+=n+1; x2+=n+1; y2+=n+1;
        cout<<calc(x1, y1, x2, y2)<<"\n";
    }
}
Compilation message (stderr)
spiral.cpp: In function 'int main()':
spiral.cpp:13:31: warning: unused variable 'filled' [-Wunused-variable]
   13 |     int n, q; cin>>n>>q; bool filled = false;
      |                               ^~~~~~
spiral.cpp:14:69: warning: unused variable 'cnt' [-Wunused-variable]
   14 |     int grid [2*n+2][2*n+2]; int layer = 0; grid[n+1][n+1] = 1; int cnt=1; int init=1;
      |                                                                     ^~~| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |