Submission #1177582

#TimeUsernameProblemLanguageResultExecution timeMemory
1177582madamadam3Mosaic (IOI24_mosaic)C++20
12 / 100
1107 ms2162688 KiB
#include "mosaic.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; using vi = vector<int>; using vl = vector<ll>; using vvi = vector<vi>; using vvl = vector<vl>; int N, Q; vvi grid; vvl prefix; void output_grid() { for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { cout << grid[i][j] << " "; } cout << "\n"; } } void colour_tile(int colour, int x, int y) { if (grid[x][y] != -1) return; grid[x][y] = colour; // down left (-1 +1) and up right (+1 -1) if (x > 0 && y < N - 1) { int ocol = grid[x-1][y+1]; int ncol = (colour == 0 && ocol == 0) ? 1 : 0; if (ocol != -1) colour_tile(ncol, x, y + 1); } if (x < N - 1 && y > 0) { int ocol = grid[x+1][y-1]; int ncol = (colour == 0 && ocol == 0) ? 1 : 0; if (ocol != -1) colour_tile(ncol, x + 1, y); } } vl mosaic(vi X, vi Y, vi T, vi B, vi L, vi R) { Q = (int) T.size(); N = (int) X.size(); grid.assign(N, vi(N, -1)); prefix.assign(N, vl(N, 0LL)); for (int i = 0; i < N; i++) { colour_tile(X[i], 0, i); } for (int i = 0; i < N; i++) { colour_tile(Y[i], i, 0); } vl C(Q, 0); for (int qn = 0; qn < Q; qn++) { int Lx = T[qn], Rx = B[qn], Ly = L[qn], Ry = R[qn]; ll tl = 0; for (int x = Lx; x <= Rx; x++) { for (int y = Ly; y <= Ry; y++) { tl += (ll) grid[x][y]; } } C[qn] = tl; } return C; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...