Submission #1314380

#TimeUsernameProblemLanguageResultExecution timeMemory
1314380CyanberryObstacles for a Llama (IOI25_obstacles)C++20
0 / 100
2093 ms16804 KiB
#include "obstacles.h" #include <bits/stdc++.h> using namespace std; set<int> walls; vector<int> T, H; vector<pair<int, int>> mem; void initialize(std::vector<int> temp, std::vector<int> hum) { mem.assign(hum.size(), {-1, -1}); int maxT = 0; T = temp, H = hum; for (int i = 0; i < T.size(); ++i) { maxT = max(maxT, T[i]); } for (int i = 0; i < H.size(); ++i) { if (H[i] >= maxT) { walls.insert(i); } } } pair<int, int> down(int a) { if (mem[a].first != -1) return mem[a]; int l = a-1, r = a+1, req = H[a]; for (int i = 0; i < T.size(); ++i) { while(l >= 0 && T[i] > H[l]) { --l; req = min(req, H[l]); // if (i == 0 && mem[l] != {-1, -1}) { // mem[a] = mem[l]; // return mem[l]; // } } while(r < H.size() && T[i] > H[r]) { ++r; req = min(req, H[r]); // if (i == 0 && mem[r] != {-1, -1}) { // mem[a] = mem[r]; // return mem[r]; // } } if (T[i] <= req) { return {l, r}; } } mem[a] = {l, r}; return {l, r}; } bool can_reach(int L, int R, int S, int D) { return down(S) == down(D); }
#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...