Submission #1006315

#TimeUsernameProblemLanguageResultExecution timeMemory
10063150pt1mus23Sterilizing Spray (JOI15_sterilizing)C++14
0 / 100
5071 ms2152 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]; vector<int> arr; void build(int node,int l,int r){ if(l==r){ T[node]=arr[l]; return ; } int mid = (l+r)/2; build((node<<1),l,mid); build((node<<1)|1,mid+1,r); T[node]= T[(node<<1)] + T[(node<<1)|1]; } 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; arr.pb(x); // if(x){ // upd(1,i,0,n-1,x); // } } build(1,0,n-1); 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:11:47: warning: overflow in conversion from 'double' to 'int' changes value from '2.0e+18' to '2147483647' [-Woverflow]
   11 | const int mod = 1e9 +7, sze = 4*100000, inf = 2e18, prime = 23;
      |                                               ^~~~
sterilizing.cpp: In function 'void upd(int, int, int, int, int)':
sterilizing.cpp:29:16: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   29 |     int mid = l+r>>1;
      |               ~^~
sterilizing.cpp: In function 'void sil(int, int, int, int, int, int)':
sterilizing.cpp:50:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   50 |     int mid = lx+rx>>1;
      |               ~~^~~
sterilizing.cpp: In function 'int qry(int, int, int, int, int)':
sterilizing.cpp:62:17: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   62 |     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...