Submission #50849

#TimeUsernameProblemLanguageResultExecution timeMemory
50849faustaadpSterilizing Spray (JOI15_sterilizing)C++17
25 / 100
5033 ms130040 KiB
#include<bits/stdc++.h> #define ll long long #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; ll n,q,k,i,a[101010],ta,tb,ST[404040],j; vector<ll> v; set<ll> sT[404040]; set<ll>::iterator it; void upd(ll aa,ll bb,ll cc,ll ee) { if(a[cc]==0) { if(sT[ee].count(cc)) sT[ee].erase(cc); } else { if(!sT[ee].count(cc)) sT[ee].insert(cc); } if(aa==bb) ST[ee]=a[cc]; else { ll ce=(aa+bb)/2; if(cc<=ce) upd(aa,ce,cc,ee*2); else upd(ce+1,bb,cc,ee*2+1); ST[ee]=ST[ee*2]+ST[ee*2+1]; } } void cari(ll aa,ll bb,ll cc,ll dd,ll ee) { if(bb<cc||dd<aa) return ; else if(cc<=aa&&bb<=dd) v.pb(ee); else { ll ce=(aa+bb)/2; cari(aa,ce,cc,dd,ee*2); cari(ce+1,bb,cc,dd,ee*2+1); } } ll jum(ll aa,ll bb,ll cc,ll dd,ll ee) { if(bb<cc||dd<aa) return 0; else if(cc<=aa&&bb<=dd) return ST[ee]; else { ll ce=(aa+bb)/2; return jum(aa,ce,cc,dd,ee*2)+jum(ce+1,bb,cc,dd,ee*2+1); } } int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>q>>k; for(i=1;i<=n;i++) { cin>>a[i]; upd(1,n,i,1); } while(q--) { cin>>ta; if(ta==1) { cin>>ta>>tb; a[ta]=tb; upd(1,n,ta,1); } else if(ta==2) { cin>>ta>>tb; if(k==1) continue; v.clear(); cari(1,n,ta,tb,1); for(i=0;i<v.size();i++) { vector<ll> tem; // cout<<v[i]<<"VI\n"; for(it=sT[v[i]].begin();it!=sT[v[i]].end();it++) { tem.pb(*it); // cout<<*it<<"IT\n"; a[*it]=a[*it]/k; // cout<<*it<<" "<<a[*it]<<" "<<a[*it]/k<<"\n"; } for(j=0;j<tem.size();j++) upd(1,n,tem[j],1); } } else { cin>>ta>>tb; cout<<jum(1,n,ta,tb,1)<<"\n"; } } }

Compilation message (stderr)

sterilizing.cpp: In function 'int main()':
sterilizing.cpp:89:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(i=0;i<v.size();i++)
            ~^~~~~~~~~
sterilizing.cpp:100:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(j=0;j<tem.size();j++)
             ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...