#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
using pii = pair<i64, i64>;
#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,avx2,mmx,fma,avx,tune=native")
const int N = 200'000, inf = 1'000'000'000;
const i64 infl = 1'000'000'000'000'000'000;
#define ff first
#define ss second
#define pb push_back
#define ins insert
#define sz(x) (int)(x).size()
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define NO cout << "NO\n"
#define YES cout << "YES\n"
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int __tc = 1;
int n, k, q;
int a[N+5], d[15];
i64 t[N*4+5];
void build(int v, int l, int r) {
if (l == r) {
t[v] = a[l];
return;
}
int mid = l + (r - l) / 2;
build(v + v, l, mid);
build(v + v + 1, mid + 1, r);
t[v] = t[v + v] + t[v + v + 1];
}
void upd(int v, int l, int r, int pos, int x) {
if (l == r) {
t[v] = a[l];
return;
}
int mid = l + (r - l) / 2;
if (pos <= mid) upd(v + v, l, mid, pos, x);
else upd(v + v + 1, mid + 1, r, pos, x);
t[v] = t[v + v] + t[v + v + 1];
}
i64 get(int v, int l, int r, int tl, int tr) {
if (l > tr || r < tl) return 0;
if (tl <= l && r <= tr) return t[v];
int mid = l + (r - l) / 2;
return get(v + v, l, mid, tl, tr) + get(v + v + 1, mid + 1, r, tl, tr);
}
void solve() {
cin >> n >> k;
for (int i = 1; i <= n; i++) cin >> a[i];
build(1, 1, n);
cin >> q;
for (int i = 1; i <= q; i++) {
int tp;
cin >> tp;
if (tp == 1) {
for (int j = 1; j <= k; j++) {
cin >> d[j];
}
if (k == 1) continue;
int FF = a[d[1]];
for (int j = 2; j <= k; j++) {
a[d[j - 1]] = a[d[j]];
upd(1, 1, n, d[j], a[d[j - 1]]);
} upd(1, 1, n, k, FF);
}
if (tp == 2) {
int l, r, m;
cin >> l >> r >> m;
i64 res = 0;
for (int i = l; i + m - 1 <= r; i++) res += get(1, 1, n, i, i + m - 1);
cout << res << '\n';
}
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(nullptr);
// cin >> __tc;
for (int _tc = 1; _tc <= __tc; _tc++) {
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... |