Submission #1280981

#TimeUsernameProblemLanguageResultExecution timeMemory
1280981bnijaamaaAddk (eJOI21_addk)C++20
100 / 100
1956 ms4744 KiB
#include <bits/stdc++.h> #define nn '\n' #define int long long #define pb push_back #define all(x) x.begin() + 1, x.end() #define rall(x) x.rbegin(), x.rend() #define vec std::vector using namespace std; const int N = 1e5 + 4; int t[N * 4]; vec < int > a(N); void build(int v, int tl, int tr) { if (tl == tr) { t[v] = a[tl]; return; } int mid = (tl + tr) / 2; build(v + v, tl, mid); build(v + v + 1, mid + 1, tr); t[v] = t[v + v] + t[v + v + 1]; } void upd(int v, int tl, int tr, int pos, int x) { if (tl == tr) { t[v] = x; return; } int mid = (tl + tr) / 2; if (pos <= mid) { upd(v + v, tl, mid, pos, x); } else { upd(v + v + 1, mid + 1, tr, pos, x); } t[v] = t[v + v] + t[v + v + 1]; } int get(int v, int tl, int tr, int l, int r) { if (r < tl || l > tr) return 0; if (l <= tl && tr <= r) return t[v]; int mid = (tl + tr) / 2; int l1 = get(v + v, tl, mid, l, r); int r1 = get(v + v + 1, mid + 1, tr, l, r); return l1 + r1; } //int main signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n, k; cin >> n >> k; for (int i = 1; i <= n; i++) cin >> a[i]; build(1, 1, n); int q; cin >> q; while (q--) { int type; cin >> type; if (type == 1) { vector < int > ans( 1 + k); for (int i = 1; i <= k; ++i) { cin >> ans[i]; } vector < int > temp(k + 1); for (int i = 1; i <= k; ++i) { temp[i] = a[ans[i]]; } for (int i = 1; i <= k - 1; ++i) { a[ans[i]] = temp[i + 1]; upd(1, 1, n, ans[i], a[ans[i]]); } a[ans[k]] = temp[1]; upd(1, 1, n, ans[k], a[ans[k]]); //for(int i = 1 ; i <= n ; i++) cout << a[i] << ' '; } else { int l, r, m; cin >> l >> r >> m; int sum = get(1, 1, n, l, r) * m ; for(int i = 1 ; i <= m - 1 ; i++ , l++) { sum -= a[l] *(m - i); } for(int i = 1; i <= m - 1 && r >= r - m + 1 ; i++ , r--) { sum -= a[r] * (m - i); } cout << sum << nn ; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...