#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define _ <<' '<<
#define print(x) cout<<#x<<": "<<(x)<<'\n'
int n,k,q;
vector<ll> a, pref, tref;
ll sum(const int l, const int r) { //inc exc
return tref[r-1]-tref[l-1]-(pref[r-1]-pref[l-1])*(l-1);
}
ll rsum(const int l, const int r) { //inc exc
const auto d=r-l;
//print(d);
//print(pref[r-1]-pref[l-1]);
//print(sum(l, r));
//print(l);
//print(r);
return (pref[r-1]-pref[l-1])*(d+1)-sum(l, r);
}
int main(){
cin.tie(0)->sync_with_stdio(0);
cout.tie(0);
cin>>n>>k;
a.resize(n+1);
pref.assign(n+1, 0);
tref=pref;
for (int i=1; i<=n; ++i) {
cin>>a[i];
pref[i]=pref[i-1]+a[i];
tref[i]=tref[i-1]+a[i]*i;
}
cin>>q;
for (int i=0; i<q; i++) {
int t;
cin>>t;
if (t==1) {
int x;
for (int i=0; i<k; i++) cin>>x;
continue;
}
int l, r, m;
cin>>l>>r>>m;
const int d=r-l+1;
//cout<<d<<endl;
if (m>(d>>1)) m=d+1-m;
//cout<<m<<endl;
//cout<<sum(l, l+m-1)<<endl;
//cout<<r-m+2 _ r+1<<endl;
//cout<<rsum(r-m+2, r+1)<<endl;
//cout<<(pref[r-m+1]-pref[l+m-2])*m<<endl;
//cout<<l+m-1 _ r-m+2<<endl;
ll ans=sum(l, l+m-1)+rsum(r-m+2, r+1)+(pref[r-m+1]-pref[l+m-2])*m;
cout<<ans<<'\n';
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |