#include <bits/stdc++.h>
#define all(a) a.begin(), a.end()
#define popcount(x) __builtin_popcountll(x)
using namespace std;
using namespace chrono;
vector<long long> mosaic(
vector<int> X, vector<int> Y,
vector<int> T, vector<int> B,
vector<int> L, vector<int> R
) {
int n = X.size();
vector<vector<int>> a(n, vector<int>(n, 0));
for (int i = 0; i < n; i++) {
a[0][i] = X[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-1][j] == 0 && a[i][j-1] == 0;
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i > 0)
a[i][j] += a[i-1][j];
if (j > 0)
a[i][j] += a[i][j-1];
if (i > 0 && j > 0)
a[i][j] -= a[i-1][j-1];
}
}
int q = T.size();
vector<long long> ans(q);
for (int i = 0; i < q; i++) {
int r1 = T[i];
int c1 = L[i];
int r2 = B[i];
int c2 = R[i];
ans[i] = a[r2][c2];
if (r1 > 0)
ans[i] -= a[r1 - 1][c2];
if (c1 > 0)
ans[i] -= a[r2][c1 - 1];
if (r1 > 0 && c1 > 0)
ans[i] -= a[r1 - 1][c1 - 1];
}
return ans;
}
//int main() {
// for (auto x : mosaic({1, 0, 1, 0}, {1, 1, 0, 1}, {0, 2}, {3, 3}, {0, 0}, {3, 2})) {
// cout << x << "\n";
// }
//}
# | 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... |