Submission #1257613

#TimeUsernameProblemLanguageResultExecution timeMemory
1257613yhx3Obstacles for a Llama (IOI25_obstacles)C++20
13 / 100
169 ms8640 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> using namespace std; using namespace __gnu_pbds; #define ord_set tree < int , null_type , less , rb_tree_tag , tree_order_statistics_node_update> #define ll unsigned long long #define rep(i,a,b) for (int i = a; i < b; i++) #define rrep(i,a,b) for (int i = a; i >= b; i--) void N() {cout<<"NO\n";} void Y() {cout<<"YES\n";} void isTrue(bool ope) { if (ope) Y();else N(); } int MD = 1e9+7; ll MX_VL = 1e18; int MX_ll = 2e9; vector<int> T; vector<int> H; vector<int> pref; vector<int> pref2; vector<int> pnt; vector<int> cnc2; int m; int n; void initialize(std::vector<int> Tp, std::vector<int> Hp) { T = Tp; H = Hp; m = Hp.size(); n = Tp.size(); pref.resize(m, 0); pref2.resize(m, 0); pref2[0] = H[0] >= 2; pref[0] = Tp.back() <= Hp[0]; rep(i, 0, m) { if (H[i] == 0) pnt.push_back(i); if (H[i] >= 2) { cnc2.push_back(i); if (i != 0) pref2[i] = pref2[i - 1] + 1; } else if (i!=0) pref2[i] = pref2[i - 1]; } rep(i, 1, m) { pref[i] = (Tp.back() <= Hp[i]) + pref[i - 1]; } } bool can_reach(int L, int R, int S, int D) { if (cnc2.empty()) return true; auto i1 = upper_bound(cnc2.begin(),cnc2.end(),D); auto tt = upper_bound(cnc2.begin(),cnc2.end(),S); if (tt == cnc2.end() && pref2[D]==pref2[S]) return true; if (pref2[D]==pref2[S])return true; if (pnt.empty()) return false; int l = i1 != cnc2.begin() ? *prev(i1,1) : -1; int r = i1 != cnc2.end() ? *i1 : m; int l2 = tt == cnc2.begin() ? -1 : *prev(tt,1); int r2 = tt != cnc2.end() ? *tt : m; int j = lower_bound(pnt.begin(),pnt.end(),l2) != pnt.end() ? *lower_bound(pnt.begin(),pnt.end(),l2) : m+1; int i = lower_bound(pnt.begin(),pnt.end(),l) != pnt.end() ? *lower_bound(pnt.begin(),pnt.end(),l) : m+1; return j <= r2 && i <= r && pref[S]==pref[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...