Submission #593146

#TimeUsernameProblemLanguageResultExecution timeMemory
593146DextarAddk (eJOI21_addk)C++14
92 / 100
149 ms6180 KiB
#include <bits/stdc++.h> #define first x #define second y #define ll long long using namespace std; const int INF = 1000 * 1000 * 1000; const int mod = 1000 * 1000 * 1000 + 7; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; int a[n]; for(int i=0; i<n; i++) { cin >> a[i]; } ll pref[n+1]; pref[0] = 0; for(int i=0; i<n; i++) { pref[i+1] = pref[i] + a[i]; } ll sumPref[n+1]; sumPref[0] = 0; for(int i=1; i<=n; i++) { sumPref[i] = sumPref[i-1] + pref[i]; } int q; cin >> q; while(q--) { int type; cin >> type; if(type==1) { int x; cin >> x; //cout<<1/0<<endl; } else { int l, r, m; cin >> l >> r >> m; int sz = r - l + 1; m = min(m , sz - m + 1); int left = l + m - 2, right = r - m ; //cout<<left<<' '<<right<<endl; ll sumMid = 1LL * m * (pref[right + 1] - pref[left]); ll sumL = 1LL * m * pref[left] - sumPref[left]; if(l>=2) { sumL += sumPref[l-2]; } ll sumR = 0LL + (sumPref[r] - sumPref[right]) - m * pref[right+1]; ll sum = sumMid + sumL + sumR; //cout<<sumMid<<' '<<sumL<<' '<<sumR<<endl; cout << sum << endl; } } return 0; } /* 3 3 1 1 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...