Submission #330910

#TimeUsernameProblemLanguageResultExecution timeMemory
330910Sho10Sterilizing Spray (JOI15_sterilizing)C++14
0 / 100
5093 ms3364 KiB
#include <bits/stdc++.h> //Andrei Alexandru a.k.a Sho10 #define ll long long #define double long double #pragma GCC optimize("O3") #pragma GCC optimize("Ofast") #define all(a) (a).begin(), (a).end() #define f first #define s second #define pb push_back #define mp make_pair #define pi pair #define rc(s) return cout<<s,0 #define endl '\n' #define mod 1000007 #define PI 3.14159265359 #define MAXN 100005 #define INF 1000000005 #define LINF 1000000000000000005ll #define CODE_START ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); using namespace std; ll n,q,a[100005],tree[400005],k; void build(int node,int l,int r){ if(l==r){ tree[node]=a[l]; return; } int mid=(l+r)/2; build(2*node,l,mid); build(2*node+1,mid+1,r); tree[node]=tree[node*2]+tree[node*2+1]; } void update(int node,int l,int r,int pos,int val){ if(l==r){ tree[node]=val; return; } int mid=(l+r)/2; if(pos<=mid){ update(2*node,l,mid,pos,val); }else update(2*node+1,mid+1,r,pos,val); tree[node]=tree[node*2]+tree[node*2+1]; } void spray(int node,int l,int r,int st,int dr){ if(st>r){ return; } if(dr<l){ return; } if(l==r){ tree[node]/=k; return; } int mid=(l+r)/2; if(st<=mid){ spray(2*node,l,mid,st,dr); } if(mid<dr){ spray(2*node+1,mid+1,r,st,dr); } tree[node]=tree[node*2]+tree[node*2+1]; } ll query(int node,int l,int r,int st,int dr){ if(st<=l&&r<=dr){ return tree[node]; } if(st>r){ return 0; } if(dr<l){ return 0; } int mid=(l+r)/2; int res=0; if(st<=mid){ res+=query(2*node,l,mid,st,dr); } if(mid<dr){ res+=query(2*node+1,mid+1,r,st,dr); } return res; } int32_t main(){ CODE_START; cin>>n>>q>>k; for(int i=1;i<=n;i++) { cin>>a[i]; } build(1,1,n); while(q--){ int type,l,r; cin>>type>>l>>r; if(type==1){ update(1,1,n,l,r); }else if(type==2){ if(k>=2) spray(1,1,n,l,r); }else if(type==3) cout<<query(1,1,n,l,r)<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...