#include<bits/stdc++.h>
using namespace std;
#define int long long
#define fi first
#define se second
const int N=5e5+5;
int ar[N];
int t[4*N];
void build(int i, int l, int r){
if (l==r) t[i]=ar[l];
else {
int m=(l+r)/2;
build(i*2,l,m);
build(i*2+1,m+1,r);
t[i]=t[i*2]+t[i*2+1];
}
}
int query(int x, int y, int i, int l, int r){
if (r<x or l>y) return 0;
if (l>=x && r<=y) return t[i];
int m=(l+r)/2;
return query(x,y,i*2,l,m)+query(x,y,i*2+1,m+1,r);
}
void update(int pos, int val, int i, int l, int r){
if (l==r) t[i]=val;
else {
int m=(l+r)/2;
if (pos<=m) update(pos,val,i*2,l,m);
else update(pos,val,i*2+1,m+1,r);
t[i]=t[i*2]+t[i*2+1];
}
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0);
int n;
cin >> n;
for (int i=1 ; i<=n ; i++) cin >> ar[i];
build(1,1,n);
int q;
cin >> q;
while (q--){
int md;
cin >> md;
if (md==1){
for (int i=1 ; i<n ; i++){
if (ar[i]>ar[i+1]){
update(i,ar[i+1],1,1,n);
update(i+1,ar[i],1,1,n);
swap(ar[i], ar[i+1]);
}
}
}
else {
int l,r;
cin >> l >> r;
cout << query(l,r,1,1,n) << "\n";
}
}
}
# | 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... |