Submission #1321505

#TimeUsernameProblemLanguageResultExecution timeMemory
1321505888313666Addk (eJOI21_addk)C++20
92 / 100
31 ms4244 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...