Submission #1156381

#TimeUsernameProblemLanguageResultExecution timeMemory
1156381Sir_Ahmed_ImranHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
0 / 100
1883 ms242036 KiB
// 01001100 01001111 01010100 01000001 \\ // \\ // ╦ ╔═╗╔╦╗╔═╗ \\ // ║ ║ ║ ║ ╠═╣ \\ // ╩═╝╚═╝ ╩ ╩ ╩ \\ // \\ // 01001100 01001111 01010100 01000001 \\ #include <bits/stdc++.h> using namespace std; #define N 1000001 #define nl '\n' #define ff first #define ss second #define add insert #define ll long long #define ld long double #define terminator main #define pll pair<ll,ll> #define append push_back #define pii pair<int,int> #define all(x) (x).begin(),(x).end() #define L0TA ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) int n, x; int a[N]; int seg[N << 2]; vector<int> mst[N << 2]; int combine(int val, vector<int> & v){ if(val <= v[0]) return 0; return val + *(--lower_bound(all(v), val)); } void build(int v = 1, int s = 0, int e = n){ if(e - s == 1){ seg[v] = 0; mst[v] = {a[s]}; return; } int mid, rc, lc, p, q; mid = (s + e) / 2; rc = 2 * v + 1; lc = 2 * v; p = q = 0; build(lc, s, mid); build(rc, mid, e); seg[v] = max(seg[lc], seg[rc]); seg[v] = max(seg[v], combine(mst[lc].back(), mst[rc])); while(p < mst[lc].size() && q < mst[rc].size()){ mst[v].append(min(mst[lc][p], mst[rc][q])); if(mst[lc][p] < mst[rc][q]) p++; else q++; } for(int i = p; i < mst[lc].size(); i++) mst[v].append(mst[lc][i]); for(int i = q; i < mst[rc].size(); i++) mst[v].append(mst[rc][i]); } int get(int l, int r, int v = 1, int s = 0, int e = n){ if(r <= s || e <= l) return 0; if(l <= s && e <= r) return max(seg[v], combine(x, mst[v])); int mid, rc, lc; mid = (s + e) / 2; rc = 2 * v + 1; lc = 2 * v; return max(get(l, r, lc, s, mid), get(l, r, rc, mid, e)); } void solve(){ int m, o, l, r, k; cin >> n >> m; for(int i = 0; i < n; i++) cin >> a[i]; build(); while(m--){ x = 0; cin >> l >> r >> k; cout << (k >= get(l - 1, r)) << nl; } } int terminator(){ L0TA; int T; solve(); return 0; }
#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...