Submission #1275155

#TimeUsernameProblemLanguageResultExecution timeMemory
1275155nonjapenzilSterilizing Spray (JOI15_sterilizing)C++20
10 / 100
92 ms9540 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define nazi return #define cogito_ergo_sum ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); ll k; struct hitler{ ll n; vector<ll>rg; void init(ll n){ rg.resize(4*n); } void build(ll v,ll l, ll r){ if(l==r){ rg[v]=0; return; } ll mid=(l+r)/2; build(2*v,l,mid); build(2*v+1,mid+1,r); } ll nilber(ll v,ll l, ll r, ll x, ll y){ if(l>y||x>r){ return 0; } if(l>=x && r<=y ){ return rg[v]; } ll mid=(l+r)/2; return nilber( v*2,l,mid,x,y)+nilber(v*2+1,mid+1,r,x,y); } void update(ll v, ll l, ll r, ll bair , ll utg){ if(bair<l||bair>r){ return ; } if(l==r){ rg[v]=utg; return; } ll mid=(l+r)/2; if(mid>=bair){ update( 2*v, l,mid,bair,utg); } else{ update(2*v+1,mid+1,r,bair,utg); } rg[v]=rg[v*2]+rg[2*v+1]; } void div(ll v, ll l , ll r, ll bair){ if(l==r){ rg[v]/=k; return ; } ll mid=(l+r)/2; if(bair<=mid){ div(2*v,l,mid,bair); } else{ div(2*v+1,mid+1,r,bair); } rg[v]=rg[2*v]+rg[2*v+1]; } }; void PresentDay_PresentTime_HAHAHAHAHA(){ ll n,q,k; cin>>n>>q>>k; hitler sg; sg.init(n); ll c[n+1]; set<ll>s; for(ll i=1 ; i<=n ; i++ ){ cin>>c[i]; if(c[i]>0){ s.insert(i); } sg.update(1,1,n,i,c[i]); } while(q--){ ll t,x,y; cin>>t>>x>>y; if(t==1){ sg.update(1,1,n,x,y); if(y>0){ s.insert(x); } } if(t==2){ if(k==1){ continue; } ll cur=x; while(!s.empty()){ auto pos=s.lower_bound(cur); if(pos==s.end()||*pos>y){ break; } ll sop=*pos; sg.div(1,1,n,sop); if(sg.nilber(1,1,n,sop,sop)==0){ s.erase(sop); } cur=*pos+1; } } if(t==3){ cout<<sg.nilber(1,1,n,x,y)<<"\n"; } } } int main(){ cogito_ergo_sum; ll WelcomeToTheNHK=1; //cin>>WelcomeToTheNHK; while(WelcomeToTheNHK--){ PresentDay_PresentTime_HAHAHAHAHA(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...