Submission #1208713

#TimeUsernameProblemLanguageResultExecution timeMemory
1208713veplsnxSterilizing Spray (JOI15_sterilizing)C++20
100 / 100
120 ms4496 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define u128 unsigned __int128 #define i128 __int128 #define sz(x) (int)x.size() #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define pb push_back #define eb emplace_back #define mt make_tuple #define mp make_pair #define pii pair<int, int> #define pll pair<ll, ll> #define pli pair<ll, int> #define pil pair<int, ll> #define ff first #define ss second const ll inf = 9e18; const int iinf = 2e9; const int N = 1e5; const ll MOD = 1e9 + 7; vector<ll> t; void build(int v, int tl, int tr, vector<int>& a){ if (tl + 1 == tr){ t[v] = a[tl]; return; } int tm = tl + tr >> 1; build(2 * v + 1, tl, tm, a); build(2 * v + 2, tm, tr, a); t[v] = t[2 * v + 1] + t[2 * v + 2]; } void upd1(int v, int tl, int tr, int pos, int val){ if (tl + 1 == tr){ t[v] = val; return; } int tm = tl + tr >> 1; if (pos < tm) upd1(2 * v + 1, tl, tm, pos, val); else upd1(2 * v + 2, tm, tr, pos, val); t[v] = t[2 * v + 1] + t[2 * v + 2]; } void upd2(int v, int tl, int tr, int ql, int qr, int k){ if (t[v] == 0 || qr <= tl || ql >= tr) return; if (tl + 1 == tr){ t[v] /= k; return; } int tm = tl + tr >> 1; upd2(2 * v + 1, tl, tm, ql, qr, k); upd2(2 * v + 2, tm, tr, ql, qr, k); t[v] = t[2 * v + 1] + t[2 * v + 2]; } ll get(int v, int tl, int tr, int ql, int qr){ if (qr <= tl || ql >= tr) return 0ll; if (ql <= tl && tr <= qr) return t[v]; int tm = tl + tr >> 1; return get(2 * v + 1, tl, tm, ql, qr) + get(2 * v + 2, tm, tr, ql, qr); } void solution(){ int k, n, q; cin >> n >> q >> k; vector<int> c(n); t.resize(4 * n); for (int i = 0; i < n; ++i) cin >> c[i]; build(0, 0, n, c); for (int i = 0; i < q; ++i){ int t, l, r; cin >> t >> l >> r; --l; if (t == 1){ upd1(0, 0, n, l, r); } else if (t == 2){ if (k != 1) upd2(0, 0, n, l, r, k); } else{ cout << get(0, 0, n, l, r) << '\n'; } } } signed main(/* Kurmankul Nurislam */){ //freopen("fcolor.in", "r", stdin); //freopen("fcolor.out", "w", stdout); cin.tie(nullptr) -> sync_with_stdio(false); int t = 1; //cin >> t; while (t--){ solution(); //cout << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...