제출 #1238931

#제출 시각아이디문제언어결과실행 시간메모리
1238931lambd47Sterilizing Spray (JOI15_sterilizing)C++17
0 / 100
40 ms7748 KiB
#include <bits/stdc++.h> #pragma GCC target("avx2") #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") #define int long long using namespace std; #define sz(v) ((int)(v).size()) #define all(v) (v).begin(), (v).end() #define L(i, j, k) for(int i = (j); i <= (k); ++i) #define R(i, j, k) for(int i = (j); i >= (k); --i) std::mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count()); struct node{ int nz,val; node(){ nz=0;val=0; } node(int x){ nz=1; val=x; } node(int x, int y){ nz=x; val=y; } node operator+(const node& aux)const { return node(nz+aux.nz,val+aux.val); } }; const int MX=1e5+7; node seg[4*MX]; int k; void upd1(int pos, int ini, int fim, int id, int val){ if(ini>id ||fim<id)return; if(ini==fim){ seg[pos].nz=(int)(val!=0); seg[pos].val=val; return; } int m=(ini+fim)/2; int e=2*pos,d=2*pos+1; upd1(e,ini,m,id,val); upd1(d,m+1,fim,id,val); seg[pos]=seg[e]+seg[d]; return; } void upd2(int pos, int ini, int fim, int l, int r){ if(seg[pos].nz == 0)return; if(ini>r || fim<l) return; if(ini==fim){ seg[pos].val/=k; seg[pos].nz=(int)(seg[pos].val!=0); return; } int m=(ini+fim)/2; int e=2*pos,d=2*pos+1; upd2(e,ini,m,l,r); upd2(d,m+1,fim,l,r); seg[pos]=seg[e]+seg[d]; return; } int query(int pos, int ini, int fim,int l, int r){ if(fim<l || ini>r)return 0; if(l<= ini && fim <= r){ return seg[pos].val; } int m=(ini+fim)/2; int e=2*pos,d=2*pos+1; return query(e,ini,m,l,r)+query(d,m+1,fim,l,r); } void solve() { int n,q;cin>>n>>q>>k; L(i,0,n-1){ int x;cin>>x; upd1(1,0,n-1,i,x); } while(q--){ int tipo;cin>>tipo; if(tipo==1){ int a,b;cin>>a>>b; a--; upd1(1,0,n-1,a,b); } else if(tipo==2){ continue; int l,r;cin>>l>>r; l--;r--; upd2(1,0,n-1,l,r); } else{ int l,r;cin>>l>>r; l--;r--; cout<<query(1,0,n-1,l,r)<<"\n"; } } } int32_t main() { std::cin.tie(0)->sync_with_stdio(0); std::cin.exceptions(std::cin.failbit); int T = 1; // std::cin >> T; while(T--) { solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...