Submission #1280042

#TimeUsernameProblemLanguageResultExecution timeMemory
1280042jcelinHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
100 / 100
715 ms71044 KiB
#include <bits/stdc++.h> #define F first #define S second #define all(x) x.begin(), x.end() #define pb push_back #define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0) using namespace std; typedef long long ll; typedef pair <ll, ll> pii; const int N = 1e6 + 7; int n, q; int a[N], fen[N], l[N], r[N], k[N]; vector <int> qu[N]; bool res[N]; void add(int x, int y) {x = n-x-1; for (x++; x < N; x += x & -x) fen[x] = max(fen[x], y);} int get(int x) {x = n-x-1; int out = 0; for (x++; x; x -= x & -x) out = max(out, fen[x]); return out;} int main () { FIO; cin >> n >> q; for (int i = 0; i < n; i++) cin >> a[i]; for (int i = 0; i < q; i++) { cin >> l[i] >> r[i] >> k[i]; l[i]--; r[i]--; qu[r[i]].pb(i); } vector <int> v; for (int i = 0; i < n; i++) { while (!v.empty() && a[v.back()] <= a[i]) v.pop_back(); if (!v.empty()) { int x = v.back(); add(x, a[i]+a[x]); } v.pb(i); for (int j : qu[i]) res[j] = (get(l[j]) <= k[j]); } for (int i = 0; i < q; i++) cout << res[i] << "\n"; 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...