Submission #910186

#TimeUsernameProblemLanguageResultExecution timeMemory
910186LOLOLOSterilizing Spray (JOI15_sterilizing)C++17
80 / 100
5050 ms7884 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; #define f first #define s second #define pb push_back #define ep emplace #define eb emplace_back #define lb lower_bound #define ub upper_bound #define all(x) x.begin(), x.end() #define rall(x) x.rbegin(), x.rend() #define uniquev(v) sort(all(v)), (v).resize(unique(all(v)) - (v).begin()) #define mem(f,x) memset(f , x , sizeof(f)) #define sz(x) (int)(x).size() #define __lcm(a, b) (1ll * ((a) / __gcd((a), (b))) * (b)) #define mxx *max_element #define mnn *min_element #define cntbit(x) __builtin_popcountll(x) #define len(x) (int)(x.length()) const int N = 1e5 + 100; ll f[N]; void upd(int i, ll x) { for (; i < N; i += i & (-i)) f[i] += x; } ll get(int i) { ll s = 0; for (; i; i -= i & (-i)) s += f[i]; return s; } ll c[N]; ll solve() { int n, q, k; cin >> n >> q >> k; for (int i = 1; i <= n; i++) { cin >> c[i]; upd(i, c[i]); } set <int> st; for (int i = 1; i <= n; i++) st.insert(i); while (q--) { int s, l, r; cin >> s >> l >> r; if (s == 1) { upd(l, r - c[l]); if (c[l]) st.erase(l); c[l] = r; if (r) { st.insert(l); } } if (s == 2) { vector <int> v; auto it = st.lower_bound(l); while (it != st.end()) { if (*it > r) break; v.pb(*it); it = next(it); } for (auto x : v) { upd(x, (c[x] / k) - c[x]); c[x] /= k; if (c[x] == 0) st.erase(x); } } if (s == 3) { cout << get(r) - get(l - 1) << '\n'; } } return 0; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; //cin >> t; while (t--) { solve(); //cout << solve() << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...