제출 #330686

#제출 시각아이디문제언어결과실행 시간메모리
330686nvmdavaHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++17
64 / 100
3086 ms237364 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ff first #define ss second mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const int N = 4000005; const ll MOD = 1'000'000'007; const int INF = 0x3f3f3f3f; int w[N]; vector<int> seg[N]; int ans[N]; int calc(int x, int i){ auto it = lower_bound(seg[i].begin(), seg[i].end(), x); if(it != seg[i].begin()) return x + *(--it); return 0; } void build(int id, int l, int r){ if(l == r){ seg[id].push_back(w[l]); return; } int m = (l + r) >> 1; int i1 = 0, i2 = 0; build(id << 1, l, m); build(id << 1 | 1, m + 1, r); while(i1 != seg[id << 1].size() && i2 != seg[id << 1 | 1].size()) seg[id].push_back(seg[id << 1][i1] < seg[id << 1 | 1][i2] ? seg[id << 1][i1++] : seg[id << 1 | 1][i2++]); while(i1 != seg[id << 1].size()) seg[id].push_back(seg[id << 1][i1++]); while(i2 != seg[id << 1 | 1].size()) seg[id].push_back(seg[id << 1 | 1][i2++]); int t = calc(seg[id << 1].back(), id << 1 | 1); ans[id] = max({ans[id << 1], ans[id << 1 | 1], t}); } int lm; int query(int id, int l, int r, int L, int R){ if(r < L || l > R) return 0; if(L <= l && r <= R){ int res = max(ans[id], calc(lm, id)); lm = max(lm, seg[id].back()); return res; } int m = (l + r) >> 1; int s1 = query(id << 1, l, m, L, R); int s2 = query(id << 1 | 1, m + 1, r, L, R); return max(s1, s2); } int 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>>w[i]; build(1, 1, n); while(m--){ int l, r, k; cin>>l>>r>>k; lm = 0; cout<<(query(1, 1, n, l, r) <= k)<<'\n'; } }

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

sortbooks.cpp: In function 'void build(int, int, int)':
sortbooks.cpp:33:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |     while(i1 != seg[id << 1].size() && i2 != seg[id << 1 | 1].size())
      |           ~~~^~~~~~~~~~~~~~~~~~~~~~
sortbooks.cpp:33:43: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   33 |     while(i1 != seg[id << 1].size() && i2 != seg[id << 1 | 1].size())
      |                                        ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
sortbooks.cpp:35:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |     while(i1 != seg[id << 1].size())
      |           ~~~^~~~~~~~~~~~~~~~~~~~~~
sortbooks.cpp:37:14: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   37 |     while(i2 != seg[id << 1 | 1].size())
      |           ~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#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...