Submission #1006312

#TimeUsernameProblemLanguageResultExecution timeMemory
10063120pt1mus23Sterilizing Spray (JOI15_sterilizing)C++14
90 / 100
5051 ms3668 KiB
#pragma GCC optimize("O3", "inline") #include <bits/stdc++.h> using namespace std; #define ins insert #define pb push_back #define int long long int #define pii pair<int, int> #define endl '\n' #define drop(x) cout<<(x)<<endl; return; #define all(x) x.begin(),x.end() const int mod = 1e9 +7, sze = 4*100000, inf = 2e18, prime = 23; int T[sze]; void upd(int node,int idx,int l,int r,int v){ if(l==r){ T[node]=v; return; } int mid = l+r>>1; if(idx<=mid){ upd((node<<1),idx,l,mid,v); } else{ upd((node<<1)|1,idx,mid+1,r,v); } T[node]= T[(node<<1)] + T[(node<<1)|1]; } void sil(int node,int l,int r,int lx,int rx,int v){ // cout<<T[node]<<endl; if(lx>r || rx<l || T[node]==0){ return; } if(lx==rx){ // cout<<T[node]<<" silirem"<<endl; T[node]/=v; return; } int mid = lx+rx>>1; sil((node<<1),l,r,lx,mid,v); sil((node<<1) +1,l,r,mid+1,rx,v); T[node]= T[(node<<1)] + T[(node<<1)|1]; } int qry(int node,int l,int r,int lx,int rx){ if(l>rx || lx>r || T[node]==0){ return 0; } if(lx>=l && rx<=r){ return T[node]; } int mid = lx+rx>>1; int left = qry((node<<1),l,r,lx,mid); int right = qry((node<<1)|1,l,r,mid+1,rx); return left+right; } void mal(){ int n,m,k; cin>>n>>m>>k; for(int i=0;i<n;i++){ int x;cin>>x; if(x){ upd(1,i,0,n-1,x); } } while(m--){ int op;cin>>op; if(op==1){ int idx,v;cin>>idx>>v; upd(1,--idx,0,n-1,v); } else if(op==2){ int l,r;cin>>l>>r; --l;--r; sil(1,l,r,0,n-1,k); // cout<<"sildim: "<<T[1]<<endl; } else if(op==3){ int l,r;cin>>l>>r; --l;--r; cout<<qry(1,l,r,0,n-1)<<endl; } } } signed main() { cin.tie(0)->sync_with_stdio(0); int tt = 1; // cin>>tt; while(tt--){ mal(); } }

Compilation message (stderr)

sterilizing.cpp: In function 'void upd(long long int, long long int, long long int, long long int, long long int)':
sterilizing.cpp:18:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   18 |     int mid = l+r>>1;
      |               ~^~
sterilizing.cpp: In function 'void sil(long long int, long long int, long long int, long long int, long long int, long long int)':
sterilizing.cpp:39:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   39 |     int mid = lx+rx>>1;
      |               ~~^~~
sterilizing.cpp: In function 'long long int qry(long long int, long long int, long long int, long long int, long long int)':
sterilizing.cpp:51:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   51 |     int mid = lx+rx>>1;
      |               ~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...