Submission #1278365

#TimeUsernameProblemLanguageResultExecution timeMemory
1278365avighnaMosaic (IOI24_mosaic)C++20
22 / 100
1205 ms2162688 KiB
#include <vector>

using int64 = long long;

std::vector<int64> 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) {
  const int N = X.size();
  std::vector grid(N + 1, std::vector<int>(N + 1));
  for (int i = 1; i <= N; ++i) {
    grid[1][i] = X[i - 1];
    grid[i][1] = Y[i - 1];
  }
  std::vector pref(N + 1, std::vector<int>(N + 1));
  for (int i = 1; i <= N; ++i) {
    for (int j = 1; j <= N; ++j) {
      if (i != 1 and j != 1) {
        grid[i][j] = !grid[i - 1][j] && !grid[i][j - 1];
      }
      pref[i][j] = grid[i][j] + pref[i - 1][j] + pref[i][j - 1] - pref[i - 1][j - 1];
    }
  }

  std::vector<int64> ans;
  for (int i = 0; i < T.size(); ++i) {
    int x1 = T[i] + 1, y1 = L[i] + 1, x2 = B[i] + 1, y2 = R[i] + 1;
    ans.push_back(pref[x2][y2] - pref[x1 - 1][y2] - pref[x2][y1 - 1] + pref[x1 - 1][y1 - 1]);
  }

  return ans;
}
#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...