#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define all(v) begin(v), end(v)
#define pi pair<int, int>
#define vi vector<int>
using namespace std;
const int N = 1e5+3;
const long long up = 1e9+33;
int n, q, k;
int a[N];
ll t[N*4], lz[N*4];
void build(int id, int L, int R){
	if(L == R){
		t[id] = a[L];
		return ;
	}
	lz[id] = 1;
	int mid = (L+R)/2;
	build(id<<1, L, mid); build(id<<1|1, mid+1, R);
	t[id] = t[id<<1] + t[id<<1|1];
}
void down(int id){
	int v = lz[id];
	t[id<<1]/=v;
	t[id<<1|1]/=v;
	lz[id<<1]*=v;
	lz[id<<1|1]*=v;
	lz[id<<1] = min(lz[id<<1], up);
	lz[id<<1|1] = min(lz[id<<1|1], up);
	lz[id] = 1;
}
void update(int id, int l, int r, int u, int v){
	if(u < l || r < u) return ;
	if(l == r){
		t[id] = v;
		lz[id] = 1;
		return ;
	}
	down(id);
	int mid = (l+r)/2;
	update(id<<1, l, mid, u, v); update(id<<1|1, mid+1, r, u, v);
	t[id] = t[id<<1] + t[id<<1|1];
	return ;
}
void spray(int id, int l, int r, int L, int R){
	if(R < l || r < L) return ;
	if(L <= l && r <= R){
		t[id] /= k;
		lz[id] *= k;
		lz[id] = min(lz[id], up);
		return ;
	}
	down(id);
	int mid = (l+r)/2;
	spray(id<<1, l, mid, L, R); spray(id<<1|1, mid+1, r, L, R);
	t[id] = t[id<<1] + t[id<<1|1];
	return ;
}
ll get(int id, int l, int r, int L, int R){
	if(R < l || r < L) return 0;
	if(L <= l && r <= R) return t[id];
	down(id);
	int mid = (l+r)/2;
	return get(id<<1, l, mid, L, R) + get(id<<1|1, mid+1, r, L, R);
}
int main(){
  ios_base::sync_with_stdio(0); cin.tie(0);
  cin >> n >> q >> k;
  for(int i = 1; i <= n; i++) cin >> a[i];
build(1, 1, n);
while(q--){
	int t, l, r; cin >> t >> l >> r;
	if(t == 1) update(1, 1, n, l, r);
	if(t == 2) spray(1, 1, n, l, r);
	if(t == 3) cout << get(1, 1, n, l, r) << "\n";
}
  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... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |