#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for(int i = (a); i <= (b); ++i)
#define FORD(i, a, b) for(int i = (a); i >= (b); --i)
#define sz(a) (int)(a).size()
#define all(a) (a).begin(), (a).end()
#define bit(s, i) (((s) >> (i)) & 1)
#define ii pair <int, int>
#define fi first
#define se second
#define ll long long
#define eb emplace_back
#define pb push_back
#define __builtin_popcount __builtin_popcountll
template <class X, class Y>
bool maximize(X &x, Y y) {
if(x < y) {
x = y;
return true;
}
return false;
}
template <class X, class Y>
bool minimize(X &x, Y y) {
if(x > y) {
x = y;
return true;
}
return false;
}
void solve();
int32_t main() {
#define task "test"
if(fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
cin.tie(0)->sync_with_stdio(0);
solve();
}
const int N=100005;
int n,q,k,c[N]; ll f[N];
set<int> st;
vector<int> del;
void upd(int id, int val){
for(; id<N; id+=id&-id) f[id]+=val;
}
ll get(int id){
ll res=0;
for(; id>0; id-=id&-id) res+=f[id];
return res;
}
void solve() {
cin>>n>>q>>k;
FOR(i,1,n) cin>>c[i], upd(i,c[i]), st.insert(i);
FOR(_,1,q){
int s; cin>>s;
if(s==1){
int a,b; cin>>a>>b;
if(c[a]==0) st.insert(a);
upd(a,-c[a]);
upd(a,c[a]=b);
}
else if(s==2){
int l,r; cin>>l>>r;
for(auto it=st.lower_bound(l); it!=st.end()&&*it<=r; ++it){
int i=*it;
upd(i,-c[i]);
upd(i,c[i]/=k);
if(c[i]==0){
del.eb(i);
}
}
for(int i:del) st.erase(i);
del.clear();
}
else{
int l,r; cin>>l>>r;
cout<<get(r)-get(l-1)<<'\n';
}
}
}
컴파일 시 표준 에러 (stderr) 메시지
sterilizing.cpp: In function 'int32_t main()':
sterilizing.cpp:39:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
39 | freopen(task".inp", "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
sterilizing.cpp:40:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
40 | freopen(task".out", "w", stdout);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
# | 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... |