Submission #953171

#TimeUsernameProblemLanguageResultExecution timeMemory
953171FaresSTHSterilizing Spray (JOI15_sterilizing)C++17
15 / 100
5045 ms3920 KiB
#pragma GCC optimize("O3,Ofast,unroll-loops") #include "bits/stdc++.h" const int MOD = 1e9 + 7; using namespace std; #define all(x) x.begin(), x.end() #define vi vector<int> #define pb push_back #define mp make_pair #define ll long long #define S second #define F first vector<ll> tree; ll N; void init(ll n) { N = 1 << (ll)ceil(log2(n)); tree.resize(N * 2, 0); } void upd(ll id, ll val) { id += N; tree[id] = val; while (id /= 2) { tree[id] = tree[id * 2] + tree[id * 2 + 1]; } } ll query(ll id, ll l, ll r, ll s, ll e) { if (s <= l && r <= e) return tree[id]; if (l > e || r < s) return 0; ll m = (l + r) / 2; return query(id * 2, l, m, s, e) + query(id * 2 + 1, m + 1, r, s, e); } void solve() { ll n, q, k; cin >> n >> q >> k; vector<ll> c(n); init(n); for (ll i = 0; i < n; i++) { cin >> c[i]; upd(i, c[i]); } while (q--) { ll s, t, u; cin >> s >> t >> u; if (s == 1) { c[t - 1] = u; upd(t - 1, u); } if (s == 2) { if (k != 1) { for (ll i = t - 1; i < u; i++) { c[i] /= k; upd(i, c[i]); } } } if (s == 3) cout << query(1, 0, N - 1, t - 1, u - 1) << endl; } } int main() { cin.tie(0)->sync_with_stdio(0); int t = 1; // cin >> t; while (t--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...