제출 #346605

#제출 시각아이디문제언어결과실행 시간메모리
346605milleniumEeeeHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
100 / 100
1873 ms79012 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = (int)1e6 + 6; struct Query { int l, k, id; Query (int l_, int k_, int id_) { l = l_, k = k_, id = id_; } Query () { } }; vector <Query> query[MAXN]; int a[MAXN]; int ans[MAXN]; int tree[MAXN * 4]; void upd(int pos, int val, int v = 1, int tl = 1, int tr = MAXN) { if (tl == tr) { tree[v] = max(tree[v], val); return; } int mid = (tl + tr) >> 1; if (pos <= mid) { upd(pos, val, v + v, tl, mid); } else { upd(pos, val, v + v + 1, mid + 1, tr); } tree[v] = max(tree[v + v], tree[v + v + 1]); } int get(int l, int r, int v = 1, int tl = 1, int tr = MAXN) { if (l <= tl && tr <= r) { return tree[v]; } if (l > tr || tl > r) { return 0; } int mid = (tl + tr) >> 1; return max(get(l, r, v + v, tl, mid), get(l, r, v + v + 1, mid + 1, tr)); } signed main() { //ios_base::sync_with_stdio(0); cin.tie(0); int n, q; cin >> n >> q; for (int i = 1; i <= n; i++) { //cin >> a[i]; scanf("%d", &a[i]); } vector <Query> vec; for (int i = 1; i <= q; i++) { int l, r, k; //cin >> l >> r >> k; scanf("%d %d %d", &l, &r, &k); query[r].push_back(Query(l, k, i)); } vector <pair<int, int>> st; for (int r = 1; r <= n; r++) { while (!st.empty() && st.back().first < a[r]) { st.pop_back(); } if (!st.empty() && st.back().first > a[r]) { upd(st.back().second, st.back().first + a[r]); } st.push_back({a[r], r}); while (!query[r].empty()) { int l = query[r].back().l; int k = query[r].back().k; int id = query[r].back().id; query[r].pop_back(); ans[id] = (get(l, r) <= k); } } for (int i = 1; i <= q; i++) { //cout << ans[i] << endl; printf("%d\n", ans[i]); } }

컴파일 시 표준 에러 (stderr) 메시지

sortbooks.cpp: In function 'int main()':
sortbooks.cpp:52:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   52 |     scanf("%d", &a[i]);
      |     ~~~~~^~~~~~~~~~~~~
sortbooks.cpp:58:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   58 |     scanf("%d %d %d", &l, &r, &k);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#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...