제출 #1288062

#제출 시각아이디문제언어결과실행 시간메모리
1288062azamuraiHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
13 / 100
1185 ms18100 KiB
#include <bits/stdc++.h> using namespace std; #define int long long const int N = 1e6 + 5; const int BLOCK = 1000; int n, m, a[N], b[N]; int block_max[N / BLOCK + 5]; signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i < n; i++) b[i] = (a[i] > a[i + 1]) ? a[i] + a[i + 1] : 0; int blocks = (n + BLOCK - 1) / BLOCK; for (int i = 0; i < blocks; i++) { int l = i * BLOCK + 1; int r = min(n - 1, (i + 1) * BLOCK); int mx = 0; for (int j = l; j <= r; j++) mx = max(mx, b[j]); block_max[i] = mx; } while (m--) { int l, r, k; cin >> l >> r >> k; r--; // because we query b[l..r-1] int bl = (l - 1) / BLOCK; int br = (r - 1) / BLOCK; int mx = 0; if (bl == br) { for (int i = l; i <= r; i++) mx = max(mx, b[i]); } else { for (int i = l; i <= (bl + 1) * BLOCK; i++) mx = max(mx, b[i]); for (int i = bl + 1; i <= br - 1; i++) mx = max(mx, block_max[i]); for (int i = br * BLOCK + 1; i <= r; i++) mx = max(mx, b[i]); } cout << (mx <= k ? 1 : 0) << '\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...