Submission #930208

#TimeUsernameProblemLanguageResultExecution timeMemory
930208vjudge1Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
100 / 100
1371 ms141828 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define int long long #define pb push_back #define all(x) x.begin(), x.end() const int maxn = 1e6 + 5; const int mod = 1e9 + 7; vector <int> g[maxn]; stack <int> st; int a[maxn], t[4 * maxn]; int ans[maxn], res[maxn], l[maxn], r[maxn], k[maxn]; void upd(int v, int tl, int tr, int pos, int val) { if (tl == tr) { t[v] = max(val + a[pos], t[v]); return; } int mid = tl + tr >> 1; if (pos <= mid) upd(v + v, tl, mid, pos, val); else upd(v + v + 1, mid + 1, tr, pos, val); t[v] = max(t[v + v], t[v + v + 1]); } int get(int v, int tl, int tr, int l, int r) { if (l > tr || r < tl) return 0; if (l <= tl && tr <= r) return t[v]; int mid = tl + tr >> 1; return max(get(v + v, tl, mid, l, r), get(v + v + 1, mid + 1, tr, l, r)); } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> a[i]; while (!st.empty() && a[st.top()] <= a[i]) { st.pop(); } if (st.empty()) ans[i] = -1; else ans[i] = st.top(); st.push(i); } for (int i = 1; i <= m; i++) { cin >> l[i] >> r[i] >> k[i]; g[r[i]].pb(i); } for (int i = 1; i <= n; i++) { if (ans[i] != -1) upd(1, 1, n, ans[i], a[i]); for (auto to : g[i]) res[to] = (get(1, 1, n, l[to], r[to]) > k[to] ? 0 : 1); } for (int i = 1; i <= m; i++) { cout << res[i] << '\n'; } }

Compilation message (stderr)

sortbooks.cpp: In function 'void upd(long long int, long long int, long long int, long long int, long long int)':
sortbooks.cpp:22:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   22 |   int mid = tl + tr >> 1;
      |             ~~~^~~~
sortbooks.cpp: In function 'long long int get(long long int, long long int, long long int, long long int, long long int)':
sortbooks.cpp:31:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   31 |   int mid = tl + tr >> 1;
      |             ~~~^~~~
#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...