Submission #1301371

#TimeUsernameProblemLanguageResultExecution timeMemory
1301371tamir1Obstacles for a Llama (IOI25_obstacles)C++20
24 / 100
126 ms11268 KiB
#include <bits/stdc++.h> #include "obstacles.h" using namespace std; static int N, M; static vector<int> Tval, Hval; static int d; // Segment tree for range maximum static vector<int> seg; // Build segment tree void build(int node, int l, int r) { if (l == r) { seg[node] = Hval[l]; return; } int mid = (l + r) / 2; build(2*node, l, mid); build(2*node+1, mid+1, r); seg[node] = max(seg[2*node], seg[2*node+1]); } // Query max in range [ql..qr] int query(int node, int l, int r, int ql, int qr) { if (r < ql || l > qr) return INT_MIN; if (ql <= l && r <= qr) return seg[node]; int mid = (l + r) / 2; return max(query(2*node, l, mid, ql, qr), query(2*node+1, mid+1, r, ql, qr)); } void initialize(vector<int> T, vector<int> H) { Tval = T; Hval = H; N = Tval.size(); M = Hval.size(); d = Tval[N-1]; // last row temperature seg.assign(4*M, INT_MIN); build(1, 0, M-1); // build segment tree on H } bool can_reach(int L, int R, int S, int D) { int e = min(S, D); int f = max(S, D); int mx = query(1, 0, M-1, e, f); // max humidity in [e..f] return d > mx; // can reach if last row temperature > max humidity in range }
#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...