Submission #1280611

#TimeUsernameProblemLanguageResultExecution timeMemory
1280611daniyar228Addk (eJOI21_addk)C++20
0 / 100
2095 ms1672 KiB
#include <bits/stdc++.h> using namespace std; using i64 = long long; using pii = pair<i64, i64>; #pragma GCC optimize("Ofast") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,avx2,mmx,fma,avx,tune=native") const int N = 200'000, inf = 1'000'000'000; const i64 infl = 1'000'000'000'000'000'000; #define ff first #define ss second #define pb push_back #define ins insert #define sz(x) (int)(x).size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define NO cout << "NO\n" #define YES cout << "YES\n" mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int __tc = 1; int n, k, q; int a[N+5], d[15]; i64 t[N*4+5]; void build(int v, int l, int r) { if (l == r) { t[v] = a[l]; return; } int mid = l + (r - l) / 2; build(v + v, l, mid); build(v + v + 1, mid + 1, r); t[v] = t[v + v] + t[v + v + 1]; } void upd(int v, int l, int r, int pos, int x) { if (l == r) { t[v] = a[l]; return; } int mid = l + (r - l) / 2; if (pos <= mid) upd(v + v, l, mid, pos, x); else upd(v + v + 1, mid + 1, r, pos, x); t[v] = t[v + v] + t[v + v + 1]; } i64 get(int v, int l, int r, int tl, int tr) { if (l > tr || r < tl) return 0; if (tl <= l && r <= tr) return t[v]; int mid = l + (r - l) / 2; return get(v + v, l, mid, tl, tr) + get(v + v + 1, mid + 1, r, tl, tr); } void solve() { cin >> n >> k; for (int i = 1; i <= n; i++) cin >> a[i]; build(1, 1, n); cin >> q; for (int i = 1; i <= q; i++) { int tp; cin >> tp; if (tp == 1) { for (int j = 1; j <= k; j++) { cin >> d[j]; } if (k == 1) continue; int FF = a[d[1]]; for (int j = 2; j <= k; j++) { a[d[j - 1]] = a[d[j]]; upd(1, 1, n, d[j], a[d[j - 1]]); } upd(1, 1, n, k, FF); } if (tp == 2) { int l, r, m; cin >> l >> r >> m; i64 res = 0; for (int i = l; i + m - 1 <= r; i++) res += get(1, 1, n, i, i + m - 1); cout << res << '\n'; } } } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); // cin >> __tc; for (int _tc = 1; _tc <= __tc; _tc++) { solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...