Submission #1253994

#TimeUsernameProblemLanguageResultExecution timeMemory
1253994countlessObstacles for a Llama (IOI25_obstacles)C++20
24 / 100
189 ms27072 KiB
#include "obstacles.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; #define sp <<" "<< #define endl "\n" const int INF = 1e9+5; // consider changing to array based if needed struct segtree { int l, r; int val; segtree *left, *right; void merge() { val = max(left->val, right->val); } segtree(int l, int r, vector<int> &a) : l(l), r(r) { if (l == r) { val = a[l]; return; } int m = (l+r) / 2; left = new segtree(l, m, a); right = new segtree(m+1, r, a); merge(); } int query(int ql, int qr) { if (ql > r or qr < l) return -1; if (ql <= l and r <= qr) return val; return max(left->query(ql, qr), right->query(ql, qr)); } }; int N, M, BEST; vector<int> T, H; segtree *st; void initialize(vector<int> _T, vector<int> _H) { N = _T.size(), M = _H.size(); T = _T, H = _H; st = new segtree(0, M-1, H); BEST = *max_element(T.begin(), T.end()); return; } bool can_reach(int L, int R, int S, int D) { if (S > D) swap(S, D); int mx = st->query(S, D); // cerr << T[0] sp mx << endl; return BEST > mx; } // imported from qoj
#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...