#include <bits/stdc++.h>
using namespace std;
#define int long long
#define nn '\n'
const int N = 5e5 + 1;
int t[N * 4], a[N];
void build(int v, int tl, int tr)
{
if (tr == tl)
{
t[v] = a[tl];
return;
}
int mid = (tl + tr) / 2;
build(v + v, tl, mid);
build(v + v + 1, mid + 1, tr);
t[v] = t[v + v] + t[v + v + 1];
}
int get(int v, int tl, int tr, int l, int r)
{
if (l > tr || r < tl) return 0;
if (l <= tl && r >= tr)
{
return t[v];
}
int mid = (tl + tr) / 2;
int s = get(v + v, tl, mid, l, r);
int g = get(v + v + 1, mid + 1, tr, l, r);
return s + g;
}
signed main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
build(1, 0, n - 1);
int q;
cin >> q;
while (q--)
{
int tip;
cin >> tip;
if (tip == 1)
{
bool ok = false;
for (int i = 0; i < n - 1; i++) {
if (a[i] > a[i + 1]) {
swap(a[i], a[i + 1]);
ok = true;
}
}
if (ok) build(1, 0, n - 1);
}
else
{
int l, r;
cin >> l >> r;
l-- , r--;
cout << get(1, 0, n - 1, l, r) << nn;
}
}
}
# | 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... |