Submission #1190465

#TimeUsernameProblemLanguageResultExecution timeMemory
1190465ezzzayAddk (eJOI21_addk)C++20
92 / 100
129 ms5892 KiB
#include<bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define int long long
const int N=3e5+5;
int a[N];
int ps[N];
int PS[N],SF[N];
vector<int>ans;
signed main(){
    int n,k;
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        ps[i]=ps[i-1]+a[i];
        PS[i]=PS[i-1]+ i*a[i];
    }
    for(int i=n;i>=1;i--){
        SF[i]=SF[i+1]+ (n-i+1)*a[i];
    }
    int q;
    cin>>q;
    while(q--){
        int t;
        cin>>t;
        if(t==1){
            int x;
            for(int i=1;i<=k;i++)cin>>x;
        }
        else{
            int l,r,m;
            cin>>l>>r>>m;
            int s=0;
            int k=min(m,r-l+1-m+1);
            int L=l+k-1;
            int R=r-k+1;
            s= (ps[R-1]-ps[L])*k;
            s+= (PS[L]-PS[l-1]) - (ps[L]-ps[l-1])*(l-1);
            s+= SF[R]-SF[r+1] - (ps[r]-ps[R-1])*(n-r);
            ans.pb(s);
        }
    }
    for(auto a:ans)cout<<a<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...