#include <iostream>
#include <vector>
using namespace std;
// Function to update the array directly
void update(vector<int>& arr, int idx, int value) {
arr[idx] = value;
}
// Function to calculate the sum of subsequences using prefix sums
long long sum_of_subsequences(vector<long long>& prefix, int l, int r, int m) {
long long result = 0;
for (int i = l; i <= r - m + 1; ++i) {
result += prefix[i + m] - prefix[i];
}
return result;
}
int main() {
int N, Q;
cin >> N >> Q;
vector<int> A(N + 1); // Use 1-based indexing
for (int i = 1; i <= N; ++i) {
cin >> A[i];
}
// Precompute prefix sums
vector<long long> prefix(N + 1, 0);
for (int i = 1; i <= N; ++i) {
prefix[i] = prefix[i - 1] + A[i];
}
while (Q--) {
int type;
cin >> type;
if (type == 1) {
int idx, value;
cin >> idx >> value;
// Update the array and recompute prefix sums
A[idx] = value;
for (int i = idx; i <= N; ++i) {
prefix[i] = prefix[i - 1] + A[i];
}
} else if (type == 2) {
int l, r, m;
cin >> l >> r >> m;
cout << sum_of_subsequences(prefix, l - 1, r, m) << endl;
}
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |