#include "mosaic.h"
#include <bits/stdc++.h>
#include <vector>
using namespace std;
#define ll long long
std::vector<long long> mosaic(std::vector<int> X, std::vector<int> Y,
std::vector<int> T, std::vector<int> B,
std::vector<int> L, std::vector<int> R) {
int N = X.size();
int Q = (int)T.size();
vector a(N, vector<ll>(N));
for (int i=0; i<N; i++) a[0][i] = X[i];
for (int i=0; i<N; i++) a[i][0] = Y[i];
for (int i=1; i<N; i++) for (int j=1; j<N; j++) a[i][j] = (a[i][j-1] | a[i-1][j]) ^ 1;
for (int i=0; i<N; i++) for (int j=0; j<N; j++) {
if (0 <= i-1) a[i][j] += a[i-1][j];
if (0 <= j-1) a[i][j] += a[i][j-1];
if (0 <= i-1 && 0 <= j-1) a[i][j] -= a[i-1][j-1];
}
std::vector<long long> C(Q, 0);
for (int i=0; i<Q; i++) {
int r1=T[i], r2=B[i];
int c1=L[i], c2=R[i];
ll ans = a[r2][c2];
if (0 <= r1-1) ans -= a[r1-1][c2];
if (0 <= c1-1) ans -= a[r2][c1-1];
if (0 <= r1-1 && 0 <= c1-1) ans += a[r1-1][c1-1];
C[i] = ans;
}
return C;
}
# | 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... |
# | 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... |