Submission #1296122

#TimeUsernameProblemLanguageResultExecution timeMemory
1296122SabaKharebavaObstacles for a Llama (IOI25_obstacles)C++20
37 / 100
71 ms8192 KiB
#include<bits/stdc++.h> using namespace std; vector<int> mp, mp1; vector<bool> isolated; void initialize(vector<int> t, vector<int> h) { mp.resize(h.size()+1, 0); mp1.resize(h.size()+1, 0); for (int i = 1; i <= h.size(); i++) { if (h[i-1] >= t.back()) mp[i] = 1; if (h[i-1] >= t[0]) mp1[i] = 1; mp[i] += mp[i-1]; mp1[i] += mp1[i-1]; } auto propagate = [&](int ind) { int i = ind; while (i >= 0 && t[0] > h[i]) { isolated[i] = false; i--; } i = ind; while (i < h.size() && t[0] > h[i]) { isolated[i] = false; i++; } }; isolated.resize(h.size(), true); for (int i = 0; i < h.size(); i++) { if (isolated[i] && h[i] < t[1] && t[0] > h[i]) { propagate(i); } } } bool can_reach(int l, int r, int s, int d) { if (d < s) swap(d, s); if ((mp[d+1]-mp[s]) > 0) return false; if (!(mp1[d+1]-mp1[s])) return true; return !(isolated[s] || isolated[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...