Submission #1307127

#TimeUsernameProblemLanguageResultExecution timeMemory
1307127fafnir장애물 (IOI25_obstacles)C++20
24 / 100
89 ms8972 KiB
#include <bits/stdc++.h> using namespace std; const int NMAX = 200'000; int T[NMAX]; int H[NMAX]; // In subtask 2, FOV is prefix sum whether a column contains a FOV cell or not int FOV[NMAX]; int N, M; int ST; void initialize(std::vector<int> lT, std::vector<int> lH) { copy(lT.begin(), lT.end(), T); copy(lH.begin(), lH.end(), H); N = lT.size(); M = lH.size(); if (N == 1) { ST = 1; FOV[0] = T[0] > H[0]; for (int i = 1; i < M; ++i) { FOV[i] = FOV[i-1] + (T[0] > H[i]); } // Subtask 2 } else { ST = 2; for (int j = 0; j < M; ++j) { int idx = int(upper_bound(T, T + N, H[j]) - T); FOV[j] = idx != N; if (j > 0) { FOV[j] += FOV[j-1]; } } } } bool can_reach(int L, int R, int S, int D) { if (S > D) {swap(S,D);} if (D <= R && S >= L) { if (ST == 2) { if (T[0] <= max(H[S], H[D])) {return false;} } int fov_cells = FOV[D] - (S != 0 ? FOV[S-1] : 0); return (D - S + 1) == (fov_cells); } return false; }
#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...