#include <bits/stdc++.h>
using namespace std;
template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { return os << '(' << p.first << ", " << p.second << ')'; }
template<typename T_container, typename T = typename enable_if<!is_same<T_container, string>::value, typename T_container::value_type>::type> ostream& operator<<(ostream &os, const T_container &v) { os << '{'; string sep; for (const T &x : v) os << sep << x, sep = ", "; return os << '}'; }
#define ll long long
#define ld long double
#define all(a) (a).begin(), (a).end()
#define sui cout.tie(NULL); cin.tie(NULL); ios_base::sync_with_stdio(false)
#define lid id << 1
#define rid id << 1 | 1
#define mid ((r + l) >> 1)
const int MAX_N = 1e5 + 5;
const int MOD = 1e9 + 7;
const ll INF = 1e9;
const ld EPS = 1e-9;
const int LOG = 30;
ll seg[MAX_N << 2];
int x[MAX_N];
int n, q, k;
void build(int l, int r, int id)
{
if (l == r - 1)
{
seg[id] = x[l];
return;
}
build(l, mid, lid);
build(mid, r, rid);
seg[id] = seg[lid] + seg[rid];
}
void upd(int s, int t, int l, int r, int id)
{
if (seg[id] == 0) return;
if (l == r - 1)
{
seg[id] /= k;
return;
}
if (s < mid) upd(s, t, l, mid, lid);
if (t > mid) upd(s, t, mid, r, rid);
seg[id] = seg[lid] + seg[rid];
}
void upd2(int x, int y, int l, int r, int id)
{
if (l == r - 1)
{
seg[id] = y;
return;
}
if (x < mid) upd2(x, y, l, mid, lid);
else upd2(x, y, mid, r, rid);
seg[id] = seg[lid] + seg[rid];
}
int get(int s, int t, int l, int r, int id)
{
if (s <= l && t >= r) return seg[id];
if (s >= r || t <= l) return 0;
return get(s, t, l, mid, lid) + get(s, t, mid, r, rid);
}
void solve() {
cin >> n >> q >> k;
for (int i = 0; i < n; i++) cin >> x[i];
build(0, n, 1);
while (q--)
{
int c;
cin >> c;
if (c == 1)
{
int x, y;
cin >> x >> y;
upd2(x - 1, y, 0, n, 1);
} else if (c == 2)
{
int l, r;
cin >> l >> r;
upd(l - 1, r, 0, n, 1);
} else
{
int l, r;
cin >> l >> r;
cout << get(l - 1, r, 0, n, 1) << "\n";
}
}
}
int main() {
sui;
int tc = 1;
//cin >> tc;
for (int t = 1; t <= tc; t++) {
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... |