Submission #848122

#TimeUsernameProblemLanguageResultExecution timeMemory
848122JoksimKaktusAddk (eJOI21_addk)C++17
92 / 100
2016 ms5180 KiB
#include <bits/stdc++.h> using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(0); int n,k; cin >> n >> k; vector <int> v(n+1); vector <long long> pre(n+1); pre[0] = 0; for(int i = 1;i <= n;i++){ cin >> v[i]; pre[i] = pre[i-1] + v[i]; } int q; cin >> q; for(int i = 0;i < q;i++){ int qu,l,r,m; cin >> qu; if(qu == 2){ cin >> l >> r >> m; int rr = r; int ll = l-1; long long sum = 0; for(int j = 0; j < min(m,(r-l)+2-m);j++){ sum += pre[rr] - pre[ll]; ll++; rr--; } cout << sum << "\n"; }else{ vector <int> res(n+1); vector <int> ind(k); for(int ii = 0;ii < k;ii++){ cin >> ind[ii]; } for(int ii = 0;ii < k-1;ii++){ int diff = v[ind[ii+1]] - v[ind[0]]; res[ind[ii]] += diff; res[ind[ii+1]] -= diff; } for(int ii = 0;ii < k-1;ii++){ int temp = v[ind[ii]]; v[ind[ii]] = v[ind[ii+1]]; v[ind[ii+1]] = temp; } for(int j = ind[0];j <= ind[k-1];j++){ res[j] = res[j-1] + res[j]; pre[j] += res[j]; } } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...