Submission #1242975

#TimeUsernameProblemLanguageResultExecution timeMemory
1242975ericl23302Mosaic (IOI24_mosaic)C++20
22 / 100
1047 ms2162688 KiB
#include "mosaic.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; 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 Q = (int)T.size(); std::vector<long long> C(Q, 0); int n = X.size(); if (n == 1) return vector<ll>(Q, X[0]); vector<vector<int>> grid(n, vector<int>(n)); for (int i = 0; i < n; ++i) grid[0][i] = X[i], grid[i][0] = Y[i]; for (int i = 1; i < n; ++i) { for (int j = 1; j < n; ++j) { if (grid[i - 1][j] + grid[i][j - 1] == 0) grid[i][j] = 1; } } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { if (i) grid[i][j] += grid[i - 1][j]; if (j) grid[i][j] += grid[i][j - 1]; if (i && j) grid[i][j] -= grid[i - 1][j - 1]; } } for (int i = 0; i < Q; ++i) { ll res = grid[B[i]][R[i]]; if (T[i]) res -= grid[T[i] - 1][R[i]]; if (L[i]) res -= grid[B[i]][L[i] - 1]; if (T[i] && L[i]) res += grid[T[i] - 1][L[i] - 1]; C[i] = res; } 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...