Submission #1150957

#TimeUsernameProblemLanguageResultExecution timeMemory
1150957trandangquangSterilizing Spray (JOI15_sterilizing)C++20
100 / 100
149 ms7020 KiB
#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; if(k==1) continue; 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'; } } }

Compilation message (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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...