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 <bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 1e9+7;
signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);  
	int n, q;
	cin >> n >> q;
	int N = 2*n+1;
	vector<vector<int>> num(N, vector<int> (N));
	int x = n, y = n, val = 1;
	num[x][y] = val;
	for (int i = 1; i <= n+1; i += 2) { //calculate grid numbers
		for (int j = 0; j < i; j++) {
			x++; val++;
			num[x][y] = val;
		}
		for (int j = 0; j < i; j++) {
			y++; val++;
			num[x][y] = val;
		}
		for (int j = 0; j <= i; j++) {
			x--; val++;
			num[x][y] = val;
		}
		for (int j = 0; j <= i; j++) {
			y--; val++;
			num[x][y] = val;
		}
	}
	while (x+1 < N) {
		x++; val++;
		num[x][y] = val;
	}
	//~ for (int i = N-1; i >= 0; i--) {
		//~ for (int j = 0; j < N; j++) {
			//~ cout << num[j][i] << " ";
		//~ }
		//~ cout << endl;
	//~ }
	for (int i = 0; i < q; i++) { //do queries
		int x1, x2, y1, y2;
		cin >> x1 >> y1 >> x2 >> y2;
		x1 += n; y1 += n; x2 += n; y2 += n;
		int ans = 0;
		for (int j = x1; j <= x2; j++) {
			for (int k = y1; k <= y2; k++) {
				ans += num[j][k];
				ans = ans%mod;
			}
		}
		cout << ans << endl;
	}
}
| # | 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... |