Submission #1040423

#TimeUsernameProblemLanguageResultExecution timeMemory
1040423vjudge1Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
100 / 100
774 ms73856 KiB
#include<bits/stdc++.h> #define INF 1e18 #define fi first #define se second #define FOR(i, k, n) for(int i = k; i <= n; i++) #define FOR1(i, k, n) for(int i = k; i >= n; i--) #define pb push_back #define fastio ios::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define vi vector<int> #define pii pair<int, int> #define vii vector<pii> #define ll long long #define vll vector<ll> #define pll pair<ll, ll> #define re return 0 #define mii map<int, int> #define input "DANCE.inp" #define output "DANCE.out" #define rf freopen(input, "r", stdin); freopen(output, "w", stdout) using namespace std; const int maxn = 1e6 + 5; const int mod = 1e9 + 7; struct shape{ int pos, id, k; }; vector<shape> event[maxn]; ll T[maxn * 4]; int a[maxn], kq[maxn]; void update(int id, int l, int r, int pos, ll val) { if(l == r) { T[id] = max(T[id], val); return; } int mid = (l + r) >> 1; if(pos <= mid) update(id * 2, l, mid, pos, val); else update(id * 2 + 1, mid + 1, r, pos, val); T[id] = max(T[id * 2], T[id * 2 + 1]); } ll get(int id, int l, int r, int u, int v) { if(l > v || r < u) return 0; if(l >= u && r <= v) return T[id]; int mid = (l + r) >> 1; return max(get(id * 2, l, mid, u, v), get(id * 2 + 1, mid + 1, r, u, v)); } int main() { fastio; int n, q; cin >> n >> q; FOR(i, 1, n) cin >> a[i]; FOR(i, 1, q) { int l, r, k; cin >> l >> r >> k; event[r].pb({l, i, k}); } vi v; v.pb(0); a[0] = 1e9 + 7; FOR(i, 1, n) { while(a[v.back()] <= a[i]) v.pop_back(); if(v.back() != 0) { update(1, 1, n, v.back(), a[i] + a[v.back()]); } for(auto x : event[i]) { int id = x.id; int l = x.pos; int k = x.k; ll res = get(1, 1, n, l, i); if(res <= k) kq[id] = 1; else kq[id] = 0; } v.pb(i); } FOR(i, 1, q) cout << kq[i] << "\n"; }
#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...