Submission #1285014

#TimeUsernameProblemLanguageResultExecution timeMemory
1285014okahak71Addk (eJOI21_addk)C++20
92 / 100
94 ms4708 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define pll pair<ll, ll> #define all(X) X.begin(), X.end() #define vec vector #define ins insert using namespace std; #pragma GCC optimize("O3") const ll inf = 1e18; map<pll, ll>mp; ll tim = 0; set<ll>eg; ll n, m; vec<ll>tin, low; vec<vec<ll>>g; vec<bool>ch; void dfs(ll u, ll p){ ch[u] = 1; bool par_sk = 0; tin[u] = low[u] = tim++; for(ll v : g[u]){ if(v == p and !par_sk){ par_sk = 1; continue; } if(ch[v]) low[u] = min(tin[v], low[u]); else{ dfs(v, u); low[u] = min(low[u], low[v]); if(low[v] > tin[u]){ ll id = mp[{min(u, v), max(u, v)}]; if(id) eg.insert(id); } } } } void _(){ ll n, kk; cin >> n >> kk; vec<ll>a(n); for(ll &i : a) cin >> i; ll q, dum; cin >> q; vec<ll>pref(n + 1, 0), qref(n + 1, 0); for(ll i = 1; i <= n; i++){ pref[i] = pref[i - 1] + a[i - 1]; qref[i] = qref[i - 1] + a[i - 1] * i; } while(q--){ ll t; cin >> t; if(t == 1) cin >> dum; else{ ll l, r, m; cin >> l >> r >> m; ll sz = r - l + 1; ll p1, mid, p2, k = min(m, sz - m + 1); mid = k * (pref[r - k + 1] - pref[l + k - 2]); p1 = (qref[l + k - 2] - qref[l - 1]) - (pref[l + k - 2] - pref[l - 1]) * (l - 1); p2 = (pref[r] - pref[r - k + 1]) * k - ((qref[r] - qref[r - k + 1]) - (pref[r] - pref[r - k + 1]) * (r - k + 1)); cout << p1 + mid + p2 << endl; } } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(0); _(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...