제출 #553022

#제출 시각아이디문제언어결과실행 시간메모리
553022FidanAddk (eJOI21_addk)C++17
92 / 100
275 ms6724 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const ll inf=(1e18); const ll N=1'000'010; ll n, k, i; vector<ll> v; vector<ll> sum; vector<ll> pre; ll prefix(ll l, ll r){ ll s=0; s=pre[r]-pre[l-1]-(l-1)*(sum[r]-sum[l-1]); return s; } ll suffix(ll l, ll r){ ll s=0; s=(r-l+2)*(sum[r]-sum[l-1])-prefix(l, r); return s; } void solve(ll l, ll r, ll m){ ll s=0, k=r-l+1; if(2*m>k) m=k-m+1; s=prefix(l, l+m-1)+m*(sum[r-m]-sum[l+m-1])+suffix(r-m+1, r); cout<<s<<endl; } int main(){ cin>>n>>k; v.push_back(0); pre.push_back(0); sum.push_back(0); for(i=1; i<=n; i++){ ll a; cin>>a; v.push_back(a); pre.push_back(0); sum.push_back(0); } for(i=1; i<=n; i++){ sum[i]=sum[i-1]+v[i]; pre[i]=pre[i-1]+v[i]*i; } ll qu; cin>>qu; while(qu--){ ll asdf; cin>>asdf; if(asdf==1){ for(i=0; i<k; i++){ ll asdf1; cin>>asdf1; } } else { ll l, r, m; cin>>l>>r>>m; solve(l, r, m); } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...