Submission #1280694

#TimeUsernameProblemLanguageResultExecution timeMemory
1280694bahaktlAddk (eJOI21_addk)C++20
100 / 100
1378 ms4740 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define int long long const int N = 1e5+10; const int inf = 1e18; int t[N*4],a[N]; void update(int v,int tl,int tr,int pos) { if(tl==tr) { t[v]=a[tl]; return; } int mid=(tl+tr)/2; if(pos>mid) update(v*2+1,mid+1,tr,pos); else update(v*2,tl,mid,pos); t[v]=t[v*2]+t[v*2+1]; } int get(int v,int tl,int tr,int l,int r) { if(tl>=l && tr<=r) return t[v]; if(l>tr || r<tl) return 0; int mid=(tl+tr)/2; return get(v*2,tl,mid,l,r)+get(v*2+1,mid+1,tr,l,r); } signed main() { ios_base::sync_with_stdio(false);cin.tie(nullptr); int T; T=1; while(T--) { int n,k; cin>>n>>k; for(int i=1;i<=n;i++) { cin>>a[i]; update(1,1,n,i); } int q; cin>>q; //cout<<k<<endl; while(q--) { int type; cin>>type; if(type==1) { int pos[k+1],val[k+1]; for(int i=1;i<=k;i++) { int x; cin>>x; pos[i]=x; val[i]=a[x]; } for(int i=1;i<=k;i++) { if(i==k) a[pos[i]]=val[1]; else a[pos[i]]=val[i+1]; update(1,1,n,pos[i]); } } else { int l,r,m; cin>>l>>r>>m; int ans=get(1,1,n,l,r)*m; for(int i=m-1;i>0;i--,l++) { ans-=a[l]*i; } for(int i=m-1;i>0;i--,r--) { ans-=a[r]*i; } cout<<ans<<"\n"; } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...