#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pll pair<ll,ll>
// B O I
// 1 2 3
vector<ll> fen;
vector<ll> vt;
ll sz;
void upd(ll idx,ll val){
while(idx<=sz){
fen[idx]+=val;
idx+=idx&(-idx);
}
}
ll sum(ll idx){
ll res=0;
while(idx>0){
res+=fen[idx];
idx-=idx&(-idx);
}
return res;
}
ll que(ll l,ll r){
if(r<l || r>sz)
return 0;
return sum(r)-sum(l-1);
}
void solve(){
ll n;
cin>>n;
vt.resize(n+1);
vector<ll> ori(n+1);
set<ll> st;
map<ll,ll> mp;
for(ll i=1;i<=n;i++){
cin>>vt[i];
st.insert(vt[i]);
}
ori=vt;
ll num=1;
for(auto &e:st)
mp[e]=num++;
for(auto &e:vt)
e=mp[e];
sz=num+10;
fen.resize(sz,0);
// // cari banyak elemen di belakang yang strict lebih besar
vector<ll> cnt(n+1);
for(ll i=1;i<=n;i++){
cnt[i]=que(vt[i]+1,num);
upd(vt[i],1);
}
vt.clear();
vt=ori;
ll q;
cin>>q;
ll op=0;
vector<ll> ans(n+1,-1);
for(ll i=1;i<=n;i++){
if(cnt[i]==i-1){
ans[i-1]=vt[i];
}
}
ll val;
while(q--){
ll t;
cin>>t;
if(t==1){
if(op+1)
op++;
}else{
ll l,r;
cin>>l>>r;
if(ans[op]==-1)
cout<<val<<endl;
else{
val=ans[op];
cout<<ans[op]<<endl;
}
}
}
}
int main(){
ios_base::sync_with_stdio(NULL);
cin.tie(0);
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |