답안 #1085686

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1085686 2024-09-08T15:05:51 Z damamila Spiral (BOI16_spiral) C++14
0 / 100
132 ms 262144 KB
#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++) { //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;
		}
		i++;
		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;
	}
	vector<vector<int>> pref = num;
	for (int i = 0; i < N; i++) { //calculate prefix sums
		for (int j = 0; j < N; j++) {
			if (i > 0) pref[i][j] += pref[i-1][j];
			pref[i][j] = (pref[i][j]+mod)%mod;
			if (j > 0) pref[i][j] += pref[i][j-1];
			pref[i][j] = (pref[i][j]+mod)%mod;
			if (i > 0 && j > 0) pref[i][j] -= pref[i-1][j-1];
			//~ cout << pref[i][j] << " ";
			pref[i][j] = (pref[i][j]+mod)%mod;
		}
		//~ 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 = pref[x2][y2];
		if (x1 > 0) ans -= pref[x1-1][y2];
		ans = (ans+mod)%mod;
		if (y1 > 0) ans -= pref[x2][y1-1];
		ans = (ans+mod)%mod;
		if (x1 > 0 && y1 > 0) ans += pref[x1-1][y1-1];
		ans = (ans+mod)%mod;
		//~ if (ans < 0) return 1; //answer is always at least 0 --> what goes wrong then
		cout << ans << endl;
	}
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 78 ms 63060 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 132 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 78 ms 63060 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 127 ms 262144 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 78 ms 63060 KB Output isn't correct
2 Halted 0 ms 0 KB -