Submission #659036

#TimeUsernameProblemLanguageResultExecution timeMemory
659036dkblossomHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
100 / 100
1855 ms135916 KiB
#include<bits/stdc++.h> using namespace std; #pragma gcc optimize("ofast") #define nn '\n' #define ll long long #define pb emplace_back #define pii pair<int,int> #define pli pair<ll,int> #define pil pair<int,ll> #define pll pair<ll,ll> #define ff first #define ss second const ll maxn = 1000005; const ll maxm = 1000005; const ll mod = 100000000000000007; const ll inf = mod*2; struct BIT{ int arr[maxn]; int n; BIT(int k){ n = k; for(int i=1;i<=n;i++) arr[i] = 0; } void modify(int x, int pos){ for(int i=pos;i<=n;i+=i&-i) arr[i] = max(arr[i],x); } int query(int pos){ int res = 0; for(int i=pos;i>0;i-=i&-i) res = max(res,arr[i]); return res; } }; struct query{ int r, x, pos; query(int a, int b, int c):r(a),x(b),pos(c){} }; int main(){ int n, q; int arr[maxn]; vector<query> que[maxn]; int ans[maxn]; int a, b, c; vector<pii> mod[maxn]; cin >> n >> q; for(int i=1;i<=n;i++) cin >> arr[i]; for(int i=1;i<=q;i++){ cin >> a >> b >> c; que[a].pb(query(b,c,i)); } vector<int> stk; for(int i=1;i<=n;i++){ while(stk.size() && arr[stk.back()]<=arr[i]) stk.pop_back(); if(stk.size()) mod[stk.back()].pb(make_pair(i,arr[i]+arr[stk.back()])); stk.pb(i); } BIT bit(n); for(int i=n;i>0;i--){ for(auto k:mod[i]) bit.modify(k.ss,k.ff); for(auto k:que[i]) ans[k.pos] = bit.query(k.r)<=k.x; } for(int i=1;i<=q;i++) cout << ans[i] << nn; }

Compilation message (stderr)

sortbooks.cpp:4: warning: ignoring '#pragma gcc optimize' [-Wunknown-pragmas]
    4 | #pragma gcc optimize("ofast")
      |
#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...